网站建设验收需要注意什么,怎么建设淘客自己的网站,湖南建设人才网,wordpress5更换后台主题数据分析#xff1a;基于K-近邻(KNN)对Pima人糖尿病预测分析 作者#xff1a;AOAIYI 作者简介#xff1a;Python领域新星作者、多项比赛获奖者#xff1a;AOAIYI首页 #x1f60a;#x1f60a;#x1f60a;如果觉得文章不错或能帮助到你学习#xff0c;可以点赞#x…数据分析基于K-近邻(KNN)对Pima人糖尿病预测分析 作者AOAIYI 作者简介Python领域新星作者、多项比赛获奖者AOAIYI首页 如果觉得文章不错或能帮助到你学习可以点赞收藏评论关注哦 如果有小伙伴需要数据集和学习交流文章下方有交流学习区一起学习进步 专栏案例数据分析数据分析某电商优惠卷数据分析数据分析旅游景点销售门票和消费情况分析数据分析消费者数据分析数据分析餐厅订单数据分析数据分析基于随机森林(RFC)对酒店预订分析预测文章目录数据分析基于K-近邻(KNN)对Pima人糖尿病预测分析一、前言二、数据准备三、数据预处理四、建立模型五、模型验证总结一、前言
k-近邻算法是分类数据最简单最有效的算法k-近邻算法是基于实例的学习使用算法时我们必须有接近实际数据的训练样本数据。k-近邻算法必须保存全部数据集如果训练数据集的很大必须使用大量的存储空间。此外由于必须对数据集中的每个数据计算距离值实际使用时可能非常耗时。k-近邻算法的另一个缺陷是它无法给出任何数据的基础结构信息因此我们也无法知晓平均实例样本和典型实例样本具有什么特征。
二、数据准备
1.数据准备 2.导入数据
import pandas as pd
import warnings
warnings.filterwarnings(ignore)data pd.read_csv(../input/Diabetes/pima-indians-diabetes.csv)
data.head()data.shape三、数据预处理
1.将每一列的标签重新命名
data.columns [Pregnancies,Glucose,BloodPressure,SkinThickness,Insulin,BMI,DiabetesPedigreeFunction,Age,Outcome]data.head()2.查看有没有空值数据
data.isnull().any()3.观察样本中阳性和阴性的个数
data.groupby(Outcome).size()4.分离特征和标签
Xdata.iloc[:,0:8]
Ydata.iloc[:,8]
Xnp.array(X)
Ynp.array(Y)print(X:,X)
print(\n)
print(Y,Y)5.划分训练集和测试集
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier,RadiusNeighborsClassifier
X_train,X_test,Y_train,Y_test train_test_split(X,Y,test_size0.2)四、建立模型
models []
models.append((KNN,KNeighborsClassifier(n_neighbors2)))
models.append((KNN with weights,KNeighborsClassifier(n_neighbors2,weightsdistance)))
models.append((Radius Neighbors,RadiusNeighborsClassifier(n_neighbors2,radius500.0)))
models分别训练三个模型计算平均评分
results []
for name,model in models:model.fit(X_train,Y_train)results.append((name,model.score(X_test,Y_test)))for i in range(len(results)):print(name:{},score:{}.format(results[i][0],results[i][1]))利用交叉验证准确对比算法的精确性
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
results []
for name,model in models:Kfold KFold(n_splits10)cv_result cross_val_score(model,X_train,Y_train,cvKfold)results.append((name,cv_result))for i in range(len(results)):print(name:{};cross_val_score:{}.format(results[i][0],results[i][1].mean()))通过以上结果显示普通KNN算法的性能更优一些接下来用普通KNN进行训练 五、模型验证
knn KNeighborsClassifier(n_neighbors2)
knn.fit(X_train,Y_train)train_score knn.score(X_train,Y_train)
test_score knn.score(X_test,Y_test)
print(train_score:{};test score:{}.format(train_score,test_score))以上结果显示表明训练样本的拟合情况不佳模型的准确性欠佳 通过画学习率曲线来观察这一结论. from sklearn.model_selection import ShuffleSplit
from sklearn.model_selection import learning_curveimport matplotlib.pyplot as plt
%matplotlib inline
knn KNeighborsClassifier(n_neighbors2)
cv ShuffleSplit(n_splits10,test_size0.2,random_state0)
plt.figure(figsize(10,6),dpi200)
plot_learning_curve(knn,Learning Curve for KNN Diabetes,X,Y,ylim(0.0,1.01),cvcv)
plt.show()学习曲线分析 从图中可以看出来训练样本的评分较低且测试样本与训练样本距离较大这是典型的欠拟合现象KNN算法没有更好的措施解决欠拟合的问题可以尝试用其他的分类器。 总结
k-近邻算法是分类数据最简单最有效的算法k-近邻算法是基于实例的学习使用算法时我们必须有接近实际数据的训练样本数据。k-近邻算法必须保存全部数据集如果训练数据集的很大必须使用大量的存储空间。此外由于必须对数据集中的每个数据计算距离值实际使用时可能非常耗时。k-近邻算法的另一个缺陷是它无法给出任何数据的基础结构信息因此我们也无法知晓平均实例样本和典型实例样本具有什么特征。