机器学习|我们在UCL找到了一个糖尿病数据集,用机器学习预测糖尿病(一)

摘要:
importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt%matplotlidinlediabetes=pd.read _ csv('C:

作者:Susan Li 

编译:袁雪瑶、吴双、姜范波

  根据美国疾病控制预防中心的数据,现在美国1/7的成年人患有糖尿病。但是到2050年,这个比例将会快速增长至高达1/3。我们在UCL机器学习数据库里一个糖尿病数据集,希望可以通过这一数据集,了解如何利用机器学习来帮助我们预测糖尿病,让我们开始吧!

       https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/diabetes.csv

数据:

  糖尿病数据集可从UCI机器学习库中获取并下载。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
diabetes=pd.read_csv('C:DownloadMachine-Learning-with-Python-masterMachine-Learning-with-Python-masterdiabetes.csv')
print(diabetes.columns)

  

Index(['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin',
    'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome'], dtype='object')
特征(怀孕次数,血糖,血压,皮脂厚度,胰岛素,BMI身体质量指数,糖尿病遗传函数,年龄,结果)
diabetes.head()

  机器学习|我们在UCL找到了一个糖尿病数据集,用机器学习预测糖尿病(一)第1张

print(diabetes.groupby('Outcome').size())
Outcome
0    500
1    268
dtype: int64   “结果”是我们将要预测的特征,0意味着未患糖尿病,1意味着患有糖尿病。在768个数据点中,500个被标记为0,268个标记为1。
print("dimennsion of diabetes data:{}".format(diabetes.shape))
dimennsion of diabetes data:(768, 9),糖尿病数据集由768个数据点组成,各有9个特征。
import seaborn as sns
sns.countplot(diabetes['Outcome'],label="Count")

  机器学习|我们在UCL找到了一个糖尿病数据集,用机器学习预测糖尿病(一)第2张

KNN算法:

  k-NN算法几乎可以说是机器学习中最简单的算法。建立模型只需存储训练数据集。而为了对新的数据点做出预测,该算法会在训练数据集中找到与其相距最近的数据点——也就是它的“近邻点”。首先,让我们研究一下是否能够确认模型的复杂度和精确度之间的关系:

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_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(1,11)

for n_neighbors in neighbors_settings:
    #build the model
    knn=KNeighborsClassifier(n_neighbors=n_neighbors)
    knn.fit(x_train,y_train)
    #record training set accuracy
    training_accuracy.append(knn.score(x_train,y_train))
    #record test set accuracy
    test_accuracy.append(knn.score(x_test,y_test))
plt.plot(neighbors_settings,training_accuracy,label="training accuracy")
plt.plot(neighbors_settings,test_accuracy,label="test accuracy")
plt.ylabel("Accuracy")
plt.xlabel("n_neighbors")
plt.legend()
plt.savefig('knn_compare_model')

  机器学习|我们在UCL找到了一个糖尿病数据集,用机器学习预测糖尿病(一)第3张

  上图展示了训练集和测试集在模型预测准确度(y轴)和近邻点个数设置(x轴)之间的关系。如果我们仅选择一个近邻点,那么训练集的预测是绝对正确的。但是当更多的近邻点被选入作为参考时,训练集的准确度会下降,这表明了使用单一近邻会导致模型太过复杂。这里的最好方案可以从图中看出是选择9个近邻点。

  图中建议我们应该选择n_neighbors=9,下面给出:

knn=KNeighborsClassifier(n_neighbors=9)
knn.fit(x_train,y_train)

print('Accuracy of K-NN classifier on training set:{:.2f}'.format(knn.score(x_train,y_train)))
print('Accuracy of K-NN classifier on training set:{:.2f}'.format(knn.score(x_test,y_test)))
Accuracy of K-NN classifier on training set:0.79
Accuracy of K-NN classifier on training set:0.78

免责声明:文章转载自《机器学习|我们在UCL找到了一个糖尿病数据集,用机器学习预测糖尿病(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇视觉词袋模型(BOVW)HP-Socket v3.2.2下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WordPress in Windows And Uncaught Error: Call to undefined function mysql_connect()

下载 WordPress  https://cn.wordpress.org/download/#download-install  直接解压出来  打开 readme.html 有简单指引。  浏览器打开 wp-admin/install.php ,指的是通过 web 服务器 打开。浏览器直接打开是源代码。 web 浏览器本身也不支持 .php ,本次...

16、mybatis学习——mybatis的动态sql之<if>、<where>和<trim>

Student.java:  StudentMapper接口定义方法:  StudentMapper配置文件进行配置 <select id="getStuByIf" resultType="student"> select * from student where <!-- test:判断...

串行通信协议——基础知识

基础知识: 微型计算机中,通信有两种方式:串行通信、并行通信 1)串行通信       串行通信是指计算机与IO设备之间数据传输的各位是按顺序逐位进行传送,通常数据在一根数据线上传输。传输速度慢,传输设备成本低,适合远程通信,但是一些差分串行通信总线(RS-485,USB等)传输距离远,抗干扰强,速度也较快。 2)并行通信   指通过多条传输线交换数据,数...

java/jsp获取当前路径的几种方法

本文结合个人实验与网上资料整合@http://blog.csdn.net/snannan_268/article/details/5511614 String path = new File(application.getRealPath(request.getServletPath() )).getParent();   //路径获取jsp文件绝对路径...

YOLOv3:训练自己的数据(附优化与问题总结)

环境说明 系统:ubuntu16.04 显卡:Tesla k80 12G显存 python环境: 2.7 && 3.6 前提条件:cuda9.0 cudnn7.0 opencv3.4.0 安装cuda和cudnn教程 安装opencv3.4.0教程 实现YOLOV3的demo 首先安装darknet框架,官网链接 git c...

使用TPU在PyTorch中实现ResNet50

作者|DR. VAIBHAV KUMAR 编译|VK 来源|Analytics In Diamag PyTorch通过提供大量强大的工具和技术,一直在推动计算机视觉和深度学习领域的发展。 在计算机视觉领域,基于深度学习的执行需要处理大量的图像数据集,因此需要一个加速的环境来加快执行过程以达到可接受的精度水平。 PyTorch通过XLA(加速线性代数)提供了...