Python数据分析-糖尿病数据集数据分析

一、研究背景介绍

糖尿病是美国最普遍的慢性病之一,每年影响数百万美国人,并对经济造成重大的经济负担。糖尿病是一种严重的慢性疾病,其中个体失去有效调节血液中葡萄糖水平的能力,并可能导致生活质量和预期寿命下降。。。。糖尿病也给经济带来了巨大的负担,诊断出的糖尿病成本约为88亿美元,未诊断的糖尿病和糖尿病前期的总成本每年接近1亿美元。本案例分析针对糖尿病数据集进行探索和分析:

二、实证分析

首先,导入需要的基础包:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号
import seaborn as sns

读取数据文件,展示数据前15行

数据和代码

df=pd.read_csv('diabetes_data.csv')
df.head(15)

 

查看数据类型和形状

df.shape

###发现数据量为七万多行,17个特征,各项特征介绍如下:

###各项特征名称

年龄:13级年龄组(_AGEG5YR见密码本)

1 = 18-24 / 2 = 25-29 / 3 = 30-34 / 4 = 35-39 / 5 = 40-44 / 6 = 45-49 / 7 = 50-54 / 8 = 55-59 / 9 = 60-64 / 10 = 65-69 / 11 = 70-74 / 12 = 75-79 / 13 = 80 岁或以上

Sex:患者性别(1:男;0:女)

HighChol:0 = 无高胆固醇 1 = 高胆固醇

CholCheck:0 = 5 年内未进行胆固醇检查 1 = 5 年内进行了胆固醇检查

BMI:身体质量指数

吸烟者:您一生中至少吸过 100 支香烟吗? [注:5 包 = 100 支香烟] 0 = 否 1 = 是

心脏病或发作:冠心病 (CHD) 或心肌梗塞 (MI) 0 = 否 1 = 是

PhysActivity:过去 30 天的身体活动 - 不包括工作 0 = 否 1 = 是

水果:每天吃水果 1 次或更多次 0 = 否 1 = 是

蔬菜:每天吃蔬菜 1 次或更多次 0 = 否 1 = 是

HvyAlcoholConsump:(成年男性每周 >=14 杯,成年女性每周 >=7 杯)0 = 否 1 = 是

GenHlth:总体而言,您的健康状况是: 等级 1-5 1 = 极好 2 = 非常好 3 = 好 4 = 一般 5 = 差

MentHlth:心理健康状况不佳的天数 1-30 天

PhysHlth:过去 30 天的身体疾病或受伤天数 1-30

DiffWalk:你走路或爬楼梯有严重困难吗? 0 = 否 1 = 是

中风:您曾经中风。 0 = 否,1 = 是

HighBP:0 = 不高,BP 1 = 高 BP

糖尿病:0 = 无糖尿病,1 = 糖尿病

进行基本的统计性描述分析

从上面结果可以看出,从描述中,我们观察到BMI,PhysHlth,MentHlth的标准差高于1,

最大值和最小值之间的差异相对较高,因此我们将使用max-min归一化来规范化它们。接下来查看缺失值

 

import missingno as msno
msno.matrix(df)

对特征分别进行可视化一下   比如各个特征的占比情况等等

import seaborn as sb
for i in df.columns:fig, ax = plt.subplots(1,1, figsize=(15, 6))sb.countplot(y = df[i],data=df, order=df[i].value_counts().index)plt.ylabel(i)plt.yticks(fontsize=13)plt.show()

 

# 接下来使用groupby函数对响应变量可视化

grouped['BMI'].plot(kind='bar')
plt.title('Average BMI by Gender')
plt.xlabel('Gender')
plt.ylabel('Average BMI')
plt.show()

接下来使用热力图看一下特征之间的相关系数

plt.figure(figsize=(15,10))
sb.heatmap(df.corr(), annot=True)
plt.show()

从上面热力图可以看出,最大相关性在0.38左右

再画出具体特征的分布

分别画出响应变量糖尿病与其他特征的关系

fig, ax = plt.subplots(5, 4, figsize=(15,15))
k = 0
for i in range(5):for j in range(4):if k >= len(df.keys()):continuecol = data.keys()[k]if col=='BMI' or col=='MentHlth' or col=='PhysHlth':sb.kdeplot(data=df, x=col, hue='Diabetes', ax=ax[i,j])else:sb.histplot(data=df, x=col, hue='Diabetes', ax=ax[i,j])k += 1
plt.tight_layout()
plt.show()

 

我们将尝试使用一些不同的模型来对两个目标类之间的数据进行分类。最后,我们将选择更好的模型。

我们希望在两个目标类别中都尽可能获得更好的结果。

在这个健康问题中,减少真正糖尿病患者的数量非常重要,但被归类为健康。

# 接下来进行标准化
df1 = df
cols = ['BMI', 'PhysHlth']
for i in cols:df1[i] = (df1[i] - df1[i].min()) / (df1[i].max() - df1[i].min())
####划分训练集和验证集
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
print('Non normalized dataset')
x_train, x_test, y_train, y_test= train_test_split(x,y,test_size=0.25,random_state=101)
print('Training: ', x_train.shape[0])
print('Test: ', x_test.shape[0])
st_x= StandardScaler()  
x_train= st_x.fit_transform(x_train)    
x_test= st_x.transform(x_test)print('Normalized dataset')
x_train1, x_test1, y_train1, y_test1 = train_test_split(x1,y1,test_size=0.25,random_state=101)
print('Training: ', x_train1.shape[0])
print('Test: ', x_test1.shape[0])

KNN模型预测

knn.fit(x_train1, y_train1)y_pred = knn.predict(x_test1)
exec1.append(time.time() - st)
cm = confusion_matrix(y_test1, y_pred)
print(cm)
print('\n')
print(classification_report(y_test1,y_pred))
print(accuracy_score(y_test1, y_pred))
accuracy1.append(accuracy_score(y_test1, y_pred))

使用其他模型试一下

 

 

从以上结果可以看出,自适应提升Adaboost模型的效果还可以,达到了0.7486.其次是极端梯度提升,KNN以及最后的决策树。

三、小结 

在这个项目中,我运用了机器学习的模型来预测一个人是否患有糖尿病,使用的模型包括自适应提升(AdaBoost)、K最近邻(KNN)和决策树(Decision Tree)等。通过对不同算法的比较和分析,最终发现自适应提升最优的算法来进行预测,并根据预测结果来制定相应的医疗干预措施,以帮助预防和治疗糖尿病。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS系统查看版本的各个命令

cat /etc/centos-release 查看CentOS版本 uname -a 命令的结果分别代表:当前系统的内核名称、主机名、内核发型版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称 cat /proc/version 命令用于查看Linux内核的版本信息。执行该命令后&#xf…

Springboot整合MinIO实现系统文件的便捷式管理实例

一、MinIO简介 1.基础描述 MinIO 是一个高性能的对象存储系统,用于存储大量非结构化数据。它以简洁、高效、可靠和高扩展性著称,能够胜任各种数据密集型任务。MinIO 采用了与 Amazon S3 兼容的 API,使得用户无需额外学习即可上手使用。下面…

DNF手游攻略:云手机辅助流光星陨刀详细攻略大全!

DNF手游中,流光星陨刀是鬼剑士的专属神器之一,拥有快速的攻击速度和优秀的物理与法术攻击属性,因其出色的性能和未来升级的潜力,成为广大玩家关注的焦点。 流光星陨刀的背景与起源 流光星陨刀作为鬼剑士的标志性武器之一&#xf…

STM32单片机开发入门(十)SSCOM串口通信助手软件安装及使用提供软件网盘链接

文章目录 一.概要二.SSCOM软件下载安装三.串口通讯配置及应用实例1.串口通讯基本配置2.字符串数据发送和接收的配置操作3.16进制数据发送和接收的配置操作4.定时自动发送数据配置操作5.wifi模块AT指令调试配置操作6.用串口烧录STM32单片机代码配置操作 四.以太网TCP服务器端配置…

【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)

前言 近日,社区版家族正式发布V2024.5版本,其中,社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品,本系列文章从背景概念开始介绍,深入浅出的为读者介绍Scope的优势以及能力…

工业数字孪生:智能制造的新引擎

数字孪生技术:智能制造的新引擎 一、数字孪生技术的基本概念与工业应用 1.1 数字孪生的定义与原理 数字孪生技术是一种先进的集成技术,它通过在数字空间创建一个精准物理对象的虚拟模型,使得我们可以在数字空间中模拟、分析和预测物理实体…

如何在 Mac 上清空硬盘后恢复丢失的数据?

如果您不小心从 Mac 硬盘上删除了重要文件,您可能会感到非常沮丧。但您仍然可以找回丢失的信息。将 Mac 想象成一个大盒子,里面装着所有东西。丢弃某样东西就像撕掉盒子上的标签:房间现在可以放新东西了,但旧东西仍然在那里&#…

JAVA期末复习题1

目录 Java 填空题整理及解析 1. 说出Java的特点: 2. Java的运行机制是先编译再解释运行。 3. 请按照以下分类补全对应的数据类型: 4. 在有限次数循环时,一般选择for循环结构;未知循环次数时,可以选择while循环结构…

【5G核心网】5G NWDAF(Network Data Analytics Function)网元功能介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

leetcode 动态规划(基础版)最长回文字串

题目: 题解: 首先回文子串肯定是连续的,如果用dp来做就需要找出一个串的所有连续子串,枚举一个串所有连续子串的可行方案是首先枚举子串的右端点,范围是(0~s.size()-1),在每一个右端点中枚举左…

【计算机毕业设计】185餐厅点餐微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

高中数学:数列-an和Sn混合的题型处理

一、核心思想 题目一般会给我们一个或几个等式作为条件,其中,含有an和Sn关联的式子 那么,如果,题目需要我们求an,我们就想办法用其他条件消除Sn即可。 反之,求Sn,则用其他条件消除an即可。 二…

数据库系统概论、数据管理的三种方式

一、数据库系统概论 数据库系统管理数据的的方式是用数据库来组织和存储数据,利用数据库管理系统,在操作系统的支持下,统一管理和控制存储在磁盘上的数据库,各类用户通过不同的方式,借助于数据库管理系统(…

MATLAB-SSA-CNN-SVM,基于SSA麻雀优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

MATLAB-SSA-CNN-SVM,基于SSA麻雀优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯,程序均包含…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-23卷积神经网络LeNet

23卷积神经网络LeNet import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt# 定义一个卷积神经网络 net nn.Sequential(nn.Conv2d(1, 6, kernel_size5, padding2), # 卷积层1:输入通道数1,输出通道数6&#x…

《分析模式》“鸦脚”表示法起源,Everest、Barker和Hay

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《分析模式》这本书里面用的并不是UML表示法。作者Martin Fowler在书中也说了,该书写于1994-1995年,当时还没有UML。作者在书中用的是一种常被人称为“鸦脚”的…

独立看门狗窗口开门狗

独立看门狗 接线图:按键用于阻塞喂狗。独立看门狗&窗口开门狗接线一样。 第一步,是开启时钟了,只有这个LSI时钟开启了独立看门狗才能运行,所以初始化独立看门狗之前,LSI必须得开启,但是这个开启LSI的…

随记:内卷是什么意思?

内卷,网络流行语,原指一类文化模式达到了某种最终的形态以后,既没有办法稳定下来,也没有办法转变为新的形态,而只能不断地在内部变得更加复杂的现象。经网络流传,很多高等学校学生用其来指代非理性的内部竞…

视频格式怎么转换?9 个免费视频转换工具

前 9 款免费视频转换器有哪些?在此视频转换器评论中,我们收集了一些有用的提示并列出了顶级免费视频转换器软件,还找出了适合所有级别(从初学者到专家)的最佳免费视频转换器。 1. Geekersoft免费在线视频转换 最好的免…

kafka(二)安装部署(2)windows

一、前提 安装Kafka之前,需要安装JDK、Zookeeper、Scala, 本次安装版本选择: JDK:1.8 Zookeeper:3.6.4 Scala:2.12 Kafka:3.5.2 1、jdk Java Downloads | Oracle 见jdk下载安装。 2、Zookeeper 下载…