机器学习——糖尿病预测

  • 实验目的

表格数据分类,糖尿病预测。

根据生活、饮食、教育、收入等属性,预测得1型、2型和不得糖尿病的概率。

  • 实验内容
  1. 获得数据
  2. 从数据探索和数据可视化中获得洞见
  3. 数据探索
  4. 数据预处理
  5. 划分数据并训练模型
  6. 微调模型
  • 编码

#获取数据

import pandas as pd

diabetes = pd.read_csv('糖尿病预测.csv')

print('dataset shape {}'.format(diabetes.shape))

diabetes.head()

结果:

#输出前五行数据

from sklearn.model_selection import train_test_split

diabetes.info()   

x_train, x_test, y_train, y_test = train_test_split(

        diabetes.loc[:, diabetes.columns != 'Diabetes_012'],

        diabetes['Diabetes_012'], stratify=diabetes['Diabetes_012'],

        random_state=66)

#数据相关性

corr = diabetes.corr()

Corr

#绘图

import seaborn as sns

import matplotlib.pyplot as plt

sns.countplot(diabetes['Diabetes_012'], label="Count")

plt.show("糖尿病数据处理图片")

输出图片:

from sklearn.neighbors import KNeighborsClassifier

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 test set: {:.2f}".format(knn.score(x_test, y_test)))

输出结果:

# 数据探索

%matplotlib inline

import matplotlib.pyplot as plt

diabetes.hist(bins=50, figsize=(20,15))

plt.show()

from sklearn.metrics import confusion_matrix

from sklearn.metrics import classification_report

y_pred = knn.predict(x_test)

print(classification_report(y_pred, y_test))

confusion = confusion_matrix(y_pred, y_test)

df_cm = pd.DataFrame(confusion)

plt.figure()

sns.heatmap(df_cm, annot=True)

plt.savefig('confusion_matrix')

plt.show()

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()

lr.fit(x_train,y_train)

predictions = lr.predict(x_test)

lr.predict_proba([[0,0,0,30,1,0,0,1,1,0,0,1,0,30,0,13,1,0,11,5,3]])

输出结果:

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

消失的狐狸君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值