当前位置: 首页 > news >正文

数据分析:基于K-近邻(KNN)对Pima人糖尿病预测分析

数据分析:基于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.分离特征和标签

X=data.iloc[:,0:8]
Y=data.iloc[:,8]
X=np.array(X)
Y=np.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_size=0.2)

四、建立模型

models = []
models.append(("KNN",KNeighborsClassifier(n_neighbors=2)))
models.append(("KNN with weights",KNeighborsClassifier(n_neighbors=2,weights="distance")))
models.append(("Radius Neighbors",RadiusNeighborsClassifier(n_neighbors=2,radius=500.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_splits=10)cv_result = cross_val_score(model,X_train,Y_train,cv=Kfold)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_neighbors=2)
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_neighbors=2)
cv= ShuffleSplit(n_splits=10,test_size=0.2,random_state=0)
plt.figure(figsize=(10,6),dpi=200)
plot_learning_curve(knn,"Learning Curve for KNN Diabetes",X,Y,ylim=(0.0,1.01),cv=cv)
plt.show()

在这里插入图片描述

学习曲线分析
从图中可以看出来,训练样本的评分较低,且测试样本与训练样本距离较大,这是典型的欠拟合现象,KNN算法没有更好的措施解决欠拟合的问题,可以尝试用其他的分类器。

总结

k-近邻算法是分类数据最简单最有效的算法,k-近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据。k-近邻算法必须保存全部数据集,如果训练数据集的很大,必须使用大量的存储空间。此外,由于必须对数据集中的每个数据计算距离值,实际使用时可能非常耗时。k-近邻算法的另一个缺陷是它无法给出任何数据的基础结构信息,因此我们也无法知晓平均实例样本和典型实例样本具有什么特征。

http://www.lryc.cn/news/36772.html

相关文章:

  • Kettle体系结构及源码解析
  • 大数据 | (二)SSH连接报错Permission denied
  • 前端——6.文本格式化标签和<div>和<span>标签
  • 浅谈Xpath注入漏洞
  • Oracle LogMiner分析归档日志
  • 趣味三角——第15章——傅里叶定理
  • 市场营销的核心是什么?
  • c/cpp - 多线程/进程 多进程
  • MySQL必知必会 | 存储过程、游标、触发器
  • 优化Facebook广告ROI的数据驱动方法:从投放到运营
  • 动态规划入门经典问题讲解
  • 快速入门深度学习1(用时1h)
  • PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总
  • 信息收集之搜索引擎
  • Flutter(四)布局类组件
  • 【黑马】Java基础从入门到起飞目录合集
  • PMP考前冲刺3.10 | 2023新征程,一举拿证
  • JavaScript Math常用方法
  • 【C++】模板进阶
  • 三板斧解决leetcode的链表题
  • 全生命周期的云原生安全框架
  • 【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问
  • 电脑怎么重装系统?教你轻松掌握这些方法
  • leetcode-每日一题-2379(简单,字符串)
  • SLF4J日志框架在项目中使用
  • Spark MLlib 模型训练
  • Python中变量的作用域精讲
  • 数据仓库工程师的工作职责的相关介绍
  • ESP UART 介绍
  • 第十三届蓝桥杯省赛Python大学B组复盘