基于印第安人糖尿病人数据集进行模型训练及结果预测

第一步:先进行数据预处理

#数据预处理
import pandas as pd
path = 'C:/Users/詹鹏程/Desktop/python/机器学习/diabetes.csv'
pima = pd.read_csv(path)
pima.head()

#查看是否正确读入
#print(pima)

#用x,y进行赋值
feature_names = ['Pregnancies','Insulin','BMI','Age']
x = pima[feature_names]
y = pima.Outcome

#确认维度
print(x.shape)
print(y.shape)

运行结果:

第二步:进行数据分离和基本的一些操作

#数据分离
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=0)

#模型训练
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
logreg.fit(x_train,y_train)

#基于测试数据集结果预测
y_pred = logreg.predict(x_test)

#使用准确率进行评估
from sklearn import metrics
print(metrics.accuracy_score(y_test,y_pred))

#确认正负样本的数据量
print(y_test.value_counts())

#1的比例
y_test.mean()

#0的比例
1-y_test.mean()

#空准确率
max(y_test.mean(),1-y_test.mean())

输出结果:

最后一步:运用混淆矩阵

#计算并展示混淆矩阵

print(metrics.confusion_matrix(y_test,y_pred))


#展示部分实际结果(25组)
print("true:",y_test.values[0:25])
print("pred:",y_pred[0:25])


#四个因子的赋值
confusion = metrics.confusion_matrix(y_test,y_pred)
TN = confusion[0,0]
FP = confusion[0,1]
FN = confusion[1,0]
TP = confusion[1,1]
print(TN,FP,FN,TP)

#准确率
Accuracy = (TP+TN)/(TN+FP+FN+TP)
print(Accuracy)
print(metrics.accuracy_score(y_test,y_pred))

#错误率
mis_rate = (FP+FN)/(TN+FP+FN+TP)
print(mis_rate)
print(1-metrics.accuracy_score(y_test,y_pred))

#灵敏度(召回率)
recall = TP/(TP+FN)
print(recall)

#特异度
specificity = TN/(TN+FP)
print(specificity)

#精确度
precision = TP/(TP+FP)
print(precision)

#F1_Score分数
F1_Score = (2*precision*recall)/(recall+precision)
print(F1_Score)

输出结果:

混淆矩阵的基本定义:

TP = True Postive :预测准确,实际为正样本的数量

FP = False Positive :预测错误,实际为负样本的数量

FN = False Negative :预测错误,实际为正样本的数量

TN = True Negative :预测准确,实际为负样本的数量

混淆指标:

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KNN(K-最近邻算法)是一种常用的机器学习算法,可以用于糖尿病预测模型。糖尿病是一种与血糖代谢紊乱相关的慢性疾病,而KNN模型可以利用已知病例的特征和类别标签,通过计算新的观察样本与已知样本之间的距离,从而预测新样本的分类。 在糖尿病预测模型中,我们首先需要收集大量的糖尿病患者的相关数据,包括年龄、BMI指数、血压、血糖水平等特征。然后,我们将这些特征作为KNN模型的输入特征。 接下来,我们需要选择一个合适的距离度量方法,常用的有欧氏距离、曼哈顿距离等。对于每个新的观察样本,KNN模型将计算该样本与已知样本的距离,并选择距离最近的K个已知样本作为参考。 最后,根据K个最近邻样本的类别标签,通过多数表决的方式确定新样本的分类。例如,如果K个最近邻样本中大多数为糖尿病患者,则将新样本分类为糖尿病。 KNN模型的一个重要参数是K值的选择,合适的K值可以对模型性能产生重要影响。较小的K值可能会导致过拟合,而较大的K值可能会导致欠拟合。因此,在选择K值时需要通过交叉验证等方法进行调优。 总的来说,KNN糖尿病预测模型是一种简单而有效的机器学习方法。它可以根据已有的糖尿病患者的数据,通过计算新样本与已知样本之间的距离,预测出新样本的分类。但是,KNN模型也有其局限性,例如对于特征间相关性较高的数据,需要额外的处理。因此,在应用KNN模型时,需要综合考虑数据特点及模型的优缺点,做出合适的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值