资源简介

用各种机器学习方法(knn,随机森林,决策树等)预测糖尿病:含数据集

资源截图

代码片段和文件信息


# coding: utf-8

# In[1]:


#-*- coding:utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
get_ipython().run_line_magic(‘matplotlib‘ ‘inline‘)
diabetes=pd.read_csv(r‘C:\Users\Administrator\Desktop\diabetes\Machine-Learning-with-Python-master\diabetes.csv‘)
print(diabetes.columns)


# In[2]:


diabetes.head()


# In[3]:


#“结果”是我们将要预测的特征,0意味着未患糖尿病,1意味着患有糖尿病。在768个数据点中,500个被标记为0268个标记为1。
print(diabetes.groupby(‘Outcome‘).size())


# In[4]:


#显示数据的维度
print(“dimennsion of diabetes data:{}“.format(diabetes.shape))


# In[5]:


import seaborn as sns
sns.countplot(diabetes[‘Outcome‘]label=“Count“)


# In[7]:


diabetes.info()


# In[70]:


#首先用knn研究一下是否能够确认模型的复杂度和精确度之间的关系
from sklearn.model_selection import train_test_split
x_trainx_testy_trainy_test=train_test_split(diabetes.loc[:diabetes.columns !=‘Outcome‘]diabetes[‘Outcome‘]stratify=diabetes[‘Outcome‘]random_state=66)
from sklearn.neighbors import KNeighborsClassifier
training_accuracy=[]
test_accuracy=[]
#try n_neighbors from 1 to 10
neighbors_settings=range(111)
 
for n_neighbors in neighbors_settings:
    #build the model
    knn=KNeighborsClassifier(n_neighbors=n_neighbors)
    knn.fit(x_trainy_train)
    #record training set accuracy
    training_accuracy.append(knn.score(x_trainy_train))
    #record test set accuracy
    test_accuracy.append(knn.score(x_testy_test))
plt.plot(neighbors_settingstraining_accuracylabel=“training accuracy“)
plt.plot(neighbors_settingstest_accuracylabel=“test accuracy“)
plt.ylabel(“Accuracy“)
plt.xlabel(“n_neighbors“)
plt.legend()
plt.savefig(‘knn_compare_model‘)


# In[73]:


#逻辑回归算法
#正则化参数C=1(默认值)的模型在训练集上准确度为78%,在测试集上准确度为77%。
from sklearn. linear_model import LogisticRegression 
logreg=LogisticRegression(). fit(x_trainy_train)
print(“Training set score:{:.3f}“. format(logreg. score(x_train y_train)))#精确到小数点后三位
print(“Test set score:{:.3f}“. format(logreg. score(x_testy_test)))


# In[74]:


#而将正则化参数C设置为100时,模型在训练集上准确度稍有提高但测试集上准确度略降,
#说明较少正则化和更复杂的模型并不一定会比默认参数模型的预测效果更好。
#所以我们选择默认值C=1
logreg100=LogisticRegression(C=100). fit(x_trainy_train)
print(“Training set accuracy:{:.3f}“. format(logreg100. score(x_trainy_train)))
print(“Test set accuracy:{:.3f}“. format(logreg100. score(x_test y_test)))


# In[77]:


#用可视化的方式来看一下用三种不同正则化参数C所得模型的系数。
#更强的正则化(C = 0.001)会使系数越来越接近于零。仔细地看图,
#我们还能发现特征“DiabetesPedigreeFunction”(糖尿病遗传函数)在 C=100 C=1 和C=0.001的情况下 系数都为正。
#这表明无论是哪个模型,DiabetesPedigreeFunction(糖尿病遗传函数)这个特征值都与样本为糖尿病是正相关的。
diabetes_features=[x for ix in enumerate(diabetes. columns) if i!=8]
plt. figure(figsize=(86))
plt. plot(logreg. coef_.T‘o‘ label=“C=1“)
plt. plot(logreg100.coef_.T‘^‘ label=“C=100“)
plt. plot(logreg100.coef_.T‘v‘ label=“C=0.001“)
plt. xticks(range(diabetes. shape[1]) diabetes_features rotation=90)
plt. hlines(00 diabetes. shape[1])
plt. ylim(-55)
plt. xlabel(“Feature“)
plt. ylabel(“Coefficient magnitude“)
plt. legend()
plt. savefig(‘1og_coef‘)



# In[71]:


#决策树算法
from sklearn.tree import

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      137092  2018-07-24 15:30  DiabetesArithmetic_version3.0\DiabetesArithmetic_version3.0.ipynb
     文件       12481  2018-07-24 15:30  DiabetesArithmetic_version3.0\DiabetesArithmetic_version3.0.py
     文件       23875  2018-07-21 16:01  DiabetesArithmetic_version3.0\diabetes.csv
     目录           0  2018-07-24 15:32  DiabetesArithmetic_version3.0\

评论

共有 条评论