基于部分机器学习算法糖尿病预测系统

目录

第一章 项目的价值.................................... 3

1.1 项目的背景.............................................. 3

1.1.1 糖尿病的发展现状................................... 3

1.1.2 糖尿病的危害....................................... 4

1.1.3 项目的作用......................................... 6

第二章 项目使用算法.................................. 6

2.1 决策树算法.............................................. 6

2.2  KNN算法................................................ 8

1. 分类决策规则.......................................... 9

2. K值的选择:.......................................... 9

3. 距离度量............................................. 11

4. 分类过程:........................................... 11

5. 回归过程:........................................... 11

2.3 人工神经网络........................................... 12

2.4 随机森林............................................... 14

第三章 项目实现与完善............................... 16

3.1 项目总体实现过程....................................... 16

3.2 数据获取............................................... 17

3.3 原始数据中变量解释..................................... 17

3.4 数据处理............................................... 19

3.5 机器学习算法实现....................................... 21

3.5.1 随机森林算法实现..................................... 21

3.5.2 决策树算法实现........................................ 23

3.5.3 KNN算法实现.......................................... 24

3.5.4 神经网络算法实现..................................... 26

第四章 总结......................................... 27

参考文献............................................ 27

附录................................................ 27

基于机器学习的糖尿病预测系统

摘要:

糖尿病是一种全球性的流行性疾病,随着经济生活的高速发展,其患病率急剧增高,已成为威胁人类健康的第三大杀手。糖尿病目前尚不能根治,一旦发生,将终身相伴。糖尿病注重细节管理,尤其是在饮食方面有严格要求,为此,患者将会失去很多生活乐趣和行动自由。现代人对于糖尿病慎重。糖尿病的慢性并发症具有高度致残性,严重者会对患者的生活和工作造成不利影响;来自于健康和经济的双重压力,给患者本人及其家属造成巨大的精神负担。

据统计,糖尿病患者中心理障碍(如抑郁症)的发病率可高达30%-50%,上述种种情况,使患者的生活质量大大降低。为帮助解决糖尿病给患者带来的巨大痛苦,提前预测是否有换糖尿病的风险,建立起联防预警机制,及时筛查出具有患病风险的高危人群,本系统选取了皮马印第安人糖尿病数据集,利用Python中的随机森林、决策树、神经网络等多种机器学习算法,构建起糖尿病风险预警系统,用户可将自身信息输入到系统中,系统会自动分析是否具有糖尿病的风险,为用户和医生进行健康筛查提供帮助。

关键词:机器学习、神经网络、KNN算法、决策树、多元统计

引言

世界卫生组织近日发布报告称,糖尿病患者的数量正以惊人的速度增长,目前全球每年约有320万人死于糖尿病导致的并发症。高血糖本身并不可怕,真正可怕的是糖尿病所致的各种并发症。如果控制不好的话,患者从头到脚、由内到外、从肉体到精神几乎无一幸免,其对患者的影响是多方面的、严重的和终身性的,与之相伴的还有长期高额的医疗支出,但最终患者还是难逃致残和早亡的结局,说糖尿病是“百病之源”可谓实至名归。

第一章 项目的价值

    1. 项目的背景
      1. 糖尿病的发展现状

糖尿病是一种严重的慢性疾病,是全球致死和致残的主要原因之一。

全球糖尿病患者数量的快速增长,已经成为几乎所有国家卫生健康体系的巨大负担。近期,发表于《柳叶刀》的一项研究显示,2021年,全球有5.29亿糖尿病患者,年龄标化患病率为6.1%。预计到2050年,全球有13.1亿糖尿病患者

中国作为糖尿病患者人数最多的国家,流行趋势更是不容忽视。

近年来,中国糖尿病患病率可谓一路走高,并且尚未出现拐点[2,3]。目前,全球1/4的糖尿病患者都在中国,其中90%以上为T2DM[4]。同时,关于中国糖尿病患者的另外一个问题也亟需关注。调查显示,我国糖尿病患者的知晓率仅为36.5%[3]。也就是说,超过一半的患者并不知道自己已经罹患糖尿病。我国糖尿病流行趋势尤为严峻,它对于患者的危害,也并非仅仅“血糖升高”这四个字。糖尿病的可怕,更在于其后期的并发症。

      1. 糖尿病的危害

   糖尿病是一种现代社会比较常见的疾病。很多人都存在着不同程度的糖尿病。糖尿病一旦患上,想要治愈的可能性不是很大。糖尿病出现之后,身体会出现很多的症状。本文将介绍一下糖尿病的危害,以及这些危害的症状表现是怎么样的。

 1、性功能障碍

 特别是中年肥胖的性功能障碍者,可考虑糖尿病的可能,需及时检查血糖情况。

 2、突如其来的视力减退

 突然发生,或迅速加重的近视、视力模糊等视力减退的情况发生时,在找不到原因的情况下,可考虑检查一下血糖。

 3、餐后低血糖

 糖尿病早期由于胰岛素分泌过程缓慢,当达到胰岛素分泌达高峰时,餐后血糖高峰已过,因此可出现低血糖的情况。如果在两餐中间的时间,经常发生头晕、心慌等低血糖症状时,需警惕糖尿病的可能。

 4、皮肤瘙痒

 当身体的皮肤经常出现不明原因的瘙痒,特别是老年人,除考虑老年性皮肤瘙痒外,也不能排除糖尿病的可能,需及时检查血糖。

 5、腹泻

 每日腹泻次数2~10次不等,常于餐后、夜间或清晨排便,大便不成形或是脂肪泻,表现为顽固或间歇性的腹泻时,也要考虑是否存在糖尿病的可能,需进一步化验血液。

 6、感染

 不明原因的感染,这种感染可以发生在皮肤、口腔、泌尿系统、肺部等部位,其特点就是感染反复发生,缠绵难愈,也要考虑检查血糖及尿糖情况。此外,临床资料显示约10%~15%的糖尿病患者会并发肺结核,因此当肺结核发展特别迅速,病情重,疗效差时,也要考虑是否存在糖尿病的可能。

 7、肢端麻木

 40%左右的糖尿病患者可出现手足麻木,肢端感觉减退或消失;有些人会感觉走路时就像踏在棉花上一样。当出现原因不明的肢端麻木时,不能忽视了检查血糖及尿糖的情况。

 此外,不明原因经常有饥饿感、疲劳感,或育龄期女性出现习惯性流产,或娩出巨大儿的产妇,或三高人群,都应注意定期检查血糖及尿糖情况

      1. 项目的作用

现代中国,70年代糖尿病仅有几十万-百万左右,美欧发达国家当时患糖尿病比例是我们及非洲落后国家的几十倍,现在我国近2亿,正在向3亿疾奔,40余年增加100多倍,火山爆发样增长。原来患糖尿病比例极低,现在反而一举超越所有国家当了糖尿病人数老大,变成了雄踞世界(>3000万人的国家)之首的国家。存在着无论国家大小我国都是第一可能。

社会在高速发展,糖尿病这头恶魔却与之伴舞,世界糖尿病人数近期已在快马加鞭奔4亿了,中期2025年左右将是奔6亿。中国无疑是老大,糖尿病人数近期将奔2.5亿,中期2025年左右将是奔4亿。现在我国患糖尿病比例已超过10%。本研究在充分调研的前提下,利用皮马印第安人糖尿病数据集,利用Python中的随机森林、决策树、逻辑回归等多种机器学习算法,构建起糖尿病风险预警系统,用户可将自身信息输入到系统中,系统会自动分析是否具有糖尿病的风险,为用户和医生进行健康筛查提供帮助。

第二章 项目使用算法

2.1 决策树算法

     首先介绍信息熵(entropy)的概念,信息熵主要用来衡量样本集合的“混乱程度”,度量事物的不确定性。信息熵越大代表样本集合越混乱,不确定性越高,其计算方式如下

E(d)=\sum_{k=1}^{n}-p_ilog(p_i)

条件熵定义:设有随机变量(X,Y)其联合概率分布为:P(X=x_i,Y=y_i)=p_{ij},条件熵H(Y|X)

表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定条件下随机变量Y的条件熵H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望:H(Y|X)=\sum p_iH(Y|X=x_i)

信息增益:信息增益表示在得知特征X的信息而使得类Y的不确定性减少的程度。

特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A在给定条件下D的经验条件熵H(D|A)之差,即g(D,A)=H(D)-H(D|A)

决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

其主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。

决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。

开始构建根节点,将所有的训练数据集都放在根节点,选择一个最有特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下获得最好的分类。如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到对应的叶节点中去;如果还有子集不能够被基本正确分类,那么就对这些子集新的选择最优特征,继续对其进行分割,构建相应的结点。如此递归下去,直到所有的训练数据子集被基本正确分类,或者没有合适的特征为止。最后每个子集都被分到叶节点上,即都有了明确的分类,这就生成了一颗决策树。

2.2  KNN算法

KNN算法是选择与输入样本在特征空间内最近邻的k个训练样本并根据一定的决策规则,给出输出结果 。

决策规则:

分类任务:输出结果为k个训练样本中占大多数的类 。

回归任务:输出结果为k个训练样本值的平均值 。

如下图的分类任务,输出结果为w1类 。

图1 KNN示意图

1. 分类决策规则

KNN算法一般是用多数表决方法,即由输入实例的K个邻近的多数类决定输入实例的类。这种思想也是经验风险最小化的结果。

训练样本为(xi , yi)。当输入实例为 x,标记为c,N_k(x)是输入实例x的k近邻训练样本集。

我们定义训练误差率是K近邻训练样本标记与输入标记不一致的比例,误差率表示为:

\frac{1}{k}\sum_{x_i\in{N_k(x)}}I(y_i\neq {c_i})=1-\frac{1}{k}\sum_{x_i\in N_k(x)} I(y_i=c_i)

因此,要使误差率最小化即经验风险最小,就要使(2.1)式右端的\frac{1}{k}\sum_{x_i\in N_k(x)} I(y_i=c_i)最大,即K近邻的标记值尽可能的与输入标记一致,所以多数表决规则等价于经验风险最小化。

2. K值的选择:

K取值较小时,模型复杂度高,训练误差会减小,泛化能力减弱;K取值较大时,模型复杂度低,训练误差会增大,泛化能力有一定的提高。

KNN模型的复杂度可以通过对噪声的容忍度来理解,若模型对噪声很敏感,则模型的复杂度高;反之,模型的复杂度低。为了更好理解模型复杂度的含义,我们取一个极端,分析K=1和K="样本数"的模型复杂度。

数据无噪声

数据有噪声

数据无噪声

数据有噪声

由上图可知,在k=1时模型结果受噪声影响较大。但在k=7时,不论输入数据的噪声有多大,输出结果都是黄色类,模型对噪声极不敏感,但是模型太过简单,包含的信息太少,也是不可取的。

通过上面两种极端的K选取结果可知,K值选择应适中,K值一般小于10,故采用交叉验证的方法选取合适的K值

3. 距离度量

KNN算法用距离来度量两个样本间的相似度,这里介绍两种距离方法:

(1)、欧式距离

D(x)=\sqrt{(a_1-b_1)^2+(a_2-b_2)^2+\cdot\cdot\cdot+(a_n-b_n)^2}

=\sqrt{\sum_{k=1}^{n}(a_i-b_i)^2}(其中a_i 和b_i为两个n为向量坐标)

(2)、曼哈顿距离

       D(x)=|a_1-b_1|+|a_2-b_2|+\cdot\cdot\cdot+|a_n-b_n|

       =\sum_{k=1}^{n} |a_i-b_i|

4. 分类过程:

(1)、选择与输入样本距离X0最近的K个训练样本Xi(i = 1,2,...,K),d(X0,Xi)表示输入样本和训练样本的距离。 

(2)、根据距离与样本成反比的性质将距离转化成权重W_i,W_i表示输入样本X_0与训练样本X_i的权重。

(3)、我们累加每一类的样本权重,并认为该权重占所有权重和的比例是该类的生成概率,概率最大的类就是输入样本的分类结果。

假设目标是二分类{C1,C2},表达式:

P_{c_h}=\frac{\sum_{j\in {C_h} W_j}}{\sum_{i=1}^{n} W_i}(h=1,2)

P_{c_1}>P_{c_2},则分类结果为C1类,反之C2类。

5. 回归过程:

(1)(2)步骤与分类过程一直,第(3)步使用如下表达式得到回归值:

P_{C_h}=\frac{\sum_{i=1}^{k}W_if(x_i)}{\sum_{i=1}^{K}W_i}

其中,y为输出结果,f(xi)为最近邻样本的值。若权重相同的话,则输出结果为K个训练样本的平均值。

2.3 人工神经网络

人工神经网络是具有适应性的简单神经元组成的广泛并互连的网络,它的组织能够模拟生物神经系统对真实世界物体作出的交互式反应。人工神经网络具有自学习、自组织、较好的容错性和优良的非线性逼近能力。

   首先介绍人工神经元模型,作为神经网络的基本元素,神经元的模型如下:

x1~xn是从其他神经元上传来的信号,w_{ij}表示从神经元 j到神经元i的连接权值,\theta表示一个阈值,或者称为偏置。

神经元输入与输出的关系为:ne_i=\sum_{j=1}^{n}(w_{ij}-\theta)=\sum_{j=0}^{n} w_{ij}x_j

建立过程

假设输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元

第一步:计算各层神经元的输入和输出: 

         hi_h(k)=\sum_{i=0}^{n}w_{hi}x_i(k) (h=1,2,\cdot\cdot\cdot,p)

         ho(k)=f(hi_h(k)) (h=1,2,\cdot\cdot\cdot,p)

         hi_o(k)=\sum_{h=0}^{p}w_{oh}x_{oh}(k)(o=1,2,\cdot\cdot\cdot,p)

         ho_o(k)=f(yi_o(k))(o=1,2,\cdot\cdot\cdot,p)

 

第二步:利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数。 

\frac{\partial e}{\partial w_{oh}}=\frac{\partial e}{eyi_o}\frac{\partial yi_o}{\partial w_{oh}}=-\delta_o(k)ho_h(k)

第三步:利用隐含层到输出层的连接权值、输出层的和隐含层的输出计算误差函数对隐含层各神经元的偏导数

 \frac{\partial e}{\partial w_{hi}}=\frac{\partial e}{\partial hi_h(k)}\frac{\partial hi_h(k)}{\partial w_{hi}}=-\delta_h(k)x_i(k)

第四步:利用输出层各神经元的δh(k)和隐含层各神经元的输出来修正连接权值

\Delta w_{oh}=-\mu \frac{\partial e}{\partial w_{oh}}=\mu \delta_o(k)ho_h(k)

  其中μ为学习率

 第五步:利用隐含层各神经元的和输入层各神经元的输入修正连接权

\Delta w_{hi}(K)=-\mu \frac{\partial e}{\partial w_{hi}}=\delta_h(k)x_i(k)

第六步:计算全局误差

E=\frac{1}{2m}\sum_{k=1}^{m}\sum_{o=1}^{q}(d_o(k)-y_o(k))^2

第七步:判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回进入下一轮学习。

符号解释

输入向量

x=(x_1,x_2,\cdot\cdot\cdot,x_n)

隐含层输入向量

hi=(hi_1,hi_2,\cdot\cdot\cdot,hi_p)

隐含层输出向量

ho=(ho_1,ho_2,\cdot\cdot\cdot,ho_p)

输出层输入向量

y_i=(yi_1,yi_2,\cdot\cdot\cdot,yi_q)

输出层输出向量

yo=(yo_1,yo_2,\cdot\cdot\cdot,yo_q)

期望输出向量

d_o=(d_1,d_2,\cdot\cdot\cdot,d_q)

误差函数

e=\frac{1}{2}\sum_{o=1}^{q}(d_0(k)-yo_o(k))^2

2.4 随机森林

随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想–集成思想的体现。

从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。

生成过程:

如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;

2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;

3)每棵树都尽最大程度的生长,并且没有剪枝过程。

优点:

1) 每棵树都选择部分样本及部分特征,一定程度避免过拟合;

2) 每棵树随机选择样本并随机选择特征,使得具有很好的抗噪能力,性能稳定;

3) 能处理很高维度的数据,并且不用做特征选择(不需要降维处理);

4) 适合并行计算;

5) 实现比较简单

缺点:

 模型训练和预测都比较慢。

第三章 项目实现与完善

3.1 项目总体实现过程

在此次预测项目的实现中,首先需要获取较多的源数据,再根据数据中的信息对数据进行处理,清洗与降维,保证后续中使用的数据的完整性与合理性。完成数据处理后,本项目使用python设计算法模型,以sklearn主要设计核心完成项目的设计。为防止单一方法的不确定性,本项目采取了4种算法预测,相互验证,保证结果的准确性,本项目还提供一定的自主选择的功能,用户可输入自己的一些信息,选择认为合适的方法预测,或可选择所有方法进行预测。

3.2 数据获取

在本项目中所使用的数据均为公共数据,均来自与阿里云天池数据集,数据来源网址为:

https://tianchi.aliyun.com/dataset/dataDetail?dataId=88343

此数据来自于国家糖尿病研究机构,使用其目的时基于现有数据集中确定的诊断测量指标来预测未诊断患者是否患有糖尿病。本数据集数据均为至少21周岁以上的匹马印第安人(女性)。数据集包括多个医学指标包括但不限于患者怀孕次数,BMI指数,年龄,胰岛素水平等。

3.3 原始数据中变量解释

原始数据中包括变量:Pregnancies 、Glucose、BloodPressure、SkinThickness、Insulin、BMI、DiabetesPedigreeFunction、Age、Outcome。

Pregnancies :妊娠,在医学中但是多次妊娠有再发妊娠糖尿病的可能性。妊娠糖尿病的发病原因主要是因为妊娠时胎盘可以分泌对抗胰岛素的激素,从而引起高胰岛素血症和高血糖。

Glucose:葡萄糖,葡萄糖含糖量高,会影响胰岛素分泌,导致血糖迅速升高,引起并发症,对身体健康有害。

BloodPressure:血压,低血压可使已经存在糖代谢异常的病人病情加重,使体内血液灌流不足,出现不同的组织器官缺血表现,高血压患者也存在胰岛素抵抗,高血压由于可以致动脉粥样硬化,加重糖尿病引起的血管和肾脏的损害。

SkinThickness:表皮厚度,根据一些研究,一个人患上糖尿病后,他的皮肤通常比正常人的皮肤更厚,辩护也分为三个阶段。在第二阶段,我们会发现我们的首富有明显的变化,皮肤会越来越差。因此,在正常情况下,一旦我们发现我们的皮肤增厚,很可能是患有糖尿病。

Insulin:胰岛素,胰岛素可增加机体内葡萄糖的利用,促进肝糖原和肌糖原的合成和贮存,并能促进葡萄糖转变为脂肪,可使血糖降低,常用于治疗糖尿病。

BMI:体脂率,BMI指数除了能表达营养状态外,对于糖尿病的风险预测和控糖效果也有一定意义。流行病学调查显示:当我国男性BMI≥24 时,高血压患病率为39.1%、糖尿病6.7%、空腹血糖升高15.6%;当我国男性BMI≥28 时,相关疾病的患病率分别为:高血压52.6%、糖尿病10.2%。可见,BMI指数对我国国民的防控疾病具有重要意义。

DiabetesPedigreeFunction:糖尿病谱系功能,有遗传因素的影响:如果2型糖尿病患者的直系亲属有2型糖尿病,则其患有2型糖尿病的风险会比普通人群高。

Age:年龄,一般来说,随着年龄的增长,胰岛细胞的衰弱更加明显。即使是非糖尿病患者,胰岛细胞衰竭程度不同也是自然的生理现象。胰岛细胞功能的衰竭会导致胰岛素不足,达到水平会诱发糖尿病。

Outcome:结果。

3.4 数据处理

数据清洗(Data cleaning)– 对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。我们要按照一定的规则把“脏数据”“洗掉”,这就是数据清洗。而数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。

首先将目标数据集导入到程序中,查看数据的基本情况,这里采用了Pandas中的read.csv()方法将数据导入,并打印出数据所有记录。在查看的过程中发现Glucose、BloodPressure、SkinThickness、Insulin、BMI这5个维度存在缺失现象,对于数据的缺失情况,程序中采用了中值补全的方式,将数据的缺失值补全。

在完成补全操作以后,项目中还引入了sklearn中的StandardScaler库对数据进行数据标准化操作,最后将文件保存到电脑上,至此完成数据清洗操作

3.5 机器学习算法实现

首先,根据所要根据前面选择的算法挑选第三方库,在这里先要导入numpy、pandas等基础库作为基础支撑,其次随机森林、决策树、KNN、神经网络算法需要在sklearn中进行引入操作。

3.5.1 随机森林算法实现

在随机森林算法的实现过程中首先算法所需的变量进行赋值,并划分训练集与测试集。由于数据集较小,共有768条记录,所以在这里选取了738条记录作为训练集,30条记录作为测试集。在拿到训练集后需要调用RandomForestClassifier()随机森林分类器对数据进行训练,系统在完成训练后会导入测试集对算法模型进行测试,输出随机森林算法的算法准确率以及对算法预测结构与真实结果之间的对比,给出算法准确度。

运行后可以看到随机森林算法的准确率在91%左右,具有较高的准确性,应用于糖尿病预警分析中具有良好效果,结果如下:

3.5.2 决策树算法实现

决策树的代码实现于前面随机森林的设计过程类似,首先算法所需的变量进行赋值,并划分训练集与测试集。由于数据集较小,共有768条记录,所以在这里选取了738条记录作为训练集,30条记录作为测试集。在拿到训练集后需要调用DecisionTreeClassifier()随机森林分类器对数据进行训练,系统在完成训练后会导入测试集对算法模型进行测试,结果如下:

运行后结果如下:

由上图可知,决策树准确度大约在83%左右,结果本身不低,但由于糖尿病本身具有较大代价,此准确度可能在实际使用中达不到需求,故本项目不建议使用决策树模型预测糖尿病。

3.5.3 KNN算法实现

在KNN算法对数据集的预测分析中,由于无法在一开始就确定K取何值时准确率最高,所以在程序中采用了循环遍历的方式寻找K值,使k从1开始到14,每次运行一次,寻找最佳k值对应的值。

程序展示:

结果如下


由上结果我们发现,对于KNN算法中在k=2时准确度最小只有62%,但在k=13时其准确度达到93%,因此,KNN算法的精度和k值有较大相关性,需要多次拟合测试。

3.5.4 神经网络算法实现

在神经网络算法中数据集较小,共有768条记录,所以在这里选取了738条记录作为训练集,30条记录作为测试集。算法步骤:

结果如下:

由上图发现,神经网络准确度只有大约80%,和决策树准确度相差不大,但由于糖尿病具有较高风险,因此在实际使用中不建议使用此方法。

第四章 总结

在数据分析领域,多元统计为我们提供了理解和预测复杂数据模式的有力工具。其中,K-最近邻(KNN)算法、神经网络、决策树和随机森林是四种广泛使用的技术。近期,我学习了如何使用这些方法来预测糖尿病,并在此分享我的学习总结。

首先,KNN算法是一种基于实例的学习,它的核心思想是:对于一个未知的样本,我们找出在训练样本中与该样本最接近的k个样本,并根据这k个样本的类别标签进行投票,得票最多的类别即为该未知样本的类别。在学习过程中,我理解到KNN对于数据的分布假设并不严格,并且其结果可解释性强。在预测糖尿病的案例中,KNN的表现令人满意,特别是在处理不平衡数据集时。

其次,神经网络是一种模拟人脑神经元连接方式的计算模型。通过训练,神经网络能够学习到输入数据与输出结果之间的复杂关系。与KNN相比,神经网络具有更强大的表示学习能力,能够处理更复杂的非线性问题。然而,神经网络的训练需要大量的标注数据,且容易过拟合。此外,神经网络的参数调整也是一个挑战。在预测糖尿病的案例中,使用神经网络取得了相当不错的结果,尤其是对于复杂的特征交互。

接下来是决策树,它是一种监督学习模型,用于预测离散的结果。它的工作原理类似于人类的决策过程,通过一系列的问题对数据进行分类或回归。决策树的优点在于其可解释性强和直观性高。然而,决策树对于特征选择和剪枝较为敏感,且容易过拟合。在预测糖尿病的案例中,决策树的表现良好,尤其在处理具有多个交互特征的数据时。

最后是随机森林,它是一种集成学习的方法,通过构建多个决策树并对它们的预测结果进行投票来做出最终的预测。随机森林的优点在于其强大的泛化能力、对特征选择的不敏感性以及能够提供特征的重要性排名。然而,随机森林的训练时间可能会比单一模型更长,并且对于高度相关的特征或缺失值较为敏感。在预测糖尿病的案例中,随机森林的表现优秀,特别是在处理高维数据和特征选择时。

在学习过程中,我通过实际案例应用这四种方法,以加深对它们的理解。例如,在分类问题中,我使用KNN、神经网络、决策树和随机森林对糖尿病数据集进行预测。通过对比实验结果,我发现这四种方法在不同的数据集和场景下各有优势。

总的来说,KNN算法、神经网络、决策树和随机森林都是非常强大的工具,各自具有独特的优点和局限性。在实际应用中,应根据问题的性质和数据的特性选择合适的方法。通过不断学习和实践,我将继续探索多元统计的奥秘,以更好地解决现实世界中的问题。

参考文献:

[1] 本文数据来自于阿里云:

https://tianchi.aliyun.com/dataset/dataDetail?dataId=88343

[2] 百度文库.《糖尿病的危害》[EB].2020

https://wenku.baidu.com/view/1555ce816729647d27284b73f242336c1eb93038.html?fr=aladdin664466&ind=2&_wkts_=1699749964654&bdQuery=%E7%B3%96%E5%B0%BF%E7%97%85%E7%9A%84%E5%8D%B1%E5%AE%B3

[3] 百度文库.《我国及世界糖尿病现状、趋势----岌岌可危》[EB].2021

https://wenku.baidu.com/view/e4efee25227916888486d776.html?fr=aladdin664466&ind=4&hitsid=1&target=%E5%B8%AE%E6%88%91%E5%86%99%E4%B8%AD%E5%9B%BD%E7%B3%96%E5%B0%BF%E7%97%85%E7%8E%B0%E7%8A%B6&_wkts_=1699750143372&bdQuery=%E4%B8%AD%E5%9B%BD%E7%B3%96%E5%B0%BF%E7%97%85%E7%8E%B0%E7%8A%B6

[4] 谢妮妮.《机器学习算法在糖尿病预测中的应用及分析》[C].青岛:青海师范大学数学与统计学院,2023

[5] 崔波,朱晓军.《混合kNN算法在2型糖尿病预测诊断中的研究》[C].山西:太原理工大学,2019

[6] 邹琼,吴曦,张杨,万毅,陈长生.《基于麻雀搜索算法优化的BP神经网络模型对2型糖尿病肾病的预测研究》[C].陕西: 空军军医大学军事预防医学系军队卫生统计学教研室特殊作业环境危害评估与防治教育部重点实验室,2024

[7] 明日科技.《python——从入门到精通》[M].北京:清华大学出版社

  • 14
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值