首页 > 编程语言 >Python机器学习:糖尿病数据集分析与预测

Python机器学习:糖尿病数据集分析与预测

时间:2024-12-29 13:27:19浏览次数:7  
标签:机器 Python data 模型 XGBoost 糖尿病 test 数据 columns

文章目录

一、数据处理

1、加载数据集

        使用 pandas 加载本地 CSV 文件,展示数据的前5行、结构信息和描述性统计量,帮助理解数据特征的分布情况。

file_path = "E:\data.csv" 
data = pd.read_csv(file_path)
print("数据集前5行:\n", data.head())
print("\n数据集信息:\n")
data.info()
print("\n数据集描述统计:\n", data.describe())
2、数据清洗与处理

        删除对分析和模型无关的列(如 PatientIDDoctorInCharge 等)。检查并确认数据集中不存在缺失值。对数值列处理可能存在的无穷大或缺失值。

columns_to_drop = [
    'PatientID', 'DoctorInCharge', 'Smoking', 'AlcoholConsumption', 
    'PhysicalActivity', 'DietQuality', 'SleepQuality', 'HeavyMetalsExposure', 
    'OccupationalExposureChemicals', 'WaterQuality', 'MedicalCheckupsFrequency', 
    'MedicationAdherence', 'HealthLiteracy'
]
data.drop(columns=columns_to_drop, inplace=True)
print("\n数据集列名:\n", data.columns)
missing_values = data.isnull().sum()
print("\n缺失值统计:\n", missing_values[missing_values > 0])

二、数据可视化

1、年龄分布

通过直方图展示患者年龄的分布情况,结合核密度估计(KDE)分析数据分布的连续性。

2、性别分布

使用饼图展示数据集中男女比例情况,帮助快速了解性别构成。

3、健康指标与糖尿病诊断的关系

通过箱线图逐一比较关键健康特征(如 BMIFastingBloodSugar 等)在不同诊断结果(0=无糖尿病,1=有糖尿病)下的分布差异,揭示相关性。

4、相关性分析

计算数据集中所有特征的相关性矩阵,并通过热力图可视化,帮助识别对糖尿病诊断可能有重要影响的变量。

三、机器学习建模

1、数据集构建

特征与标签分离,剔除 Diagnosis 列作为标签,其他列作为特征。
划分训练集和测试集,比例为 80%:20%。
使用 StandardScaler 对特征进行标准化处理,确保模型收敛和性能稳定。

data.fillna(data.mean(), inplace=True)
X = data.drop(columns=['Diagnosis']) 
y = data['Diagnosis'] 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
2、模型训练与评估
逻辑回归模型

使用逻辑回归对数据进行分类,通过分类报告、准确率和 ROC 曲线(AUC=0.87)评估模型性能。准确率为 84.57%。

随机森林模型

使用随机森林分类器进行训练,表现优于逻辑回归,准确率达 91.76%,AUC 提升至 0.94。

XGBoost模型

通过 XGBoost 分类器进一步优化,准确率提升至 92.82%,分类报告显示模型在精确度和召回率上都有优异表现,AUC 达到 0.96。

四、总结

        数据集经过清洗与特征选择后,构建了三种不同的机器学习模型:逻辑回归、随机森林和 XGBoost。三者性能依次提升,XGBoost 模型表现最佳。可视化手段有效帮助分析了年龄、性别分布以及关键健康指标与糖尿病诊断的关系。模型评估中,XGBoost 在精度、召回率、F1 分数和 ROC 曲线表现上均优于其他模型,适合用于此类医学诊断任务。

标签:机器,Python,data,模型,XGBoost,糖尿病,test,数据,columns
From: https://blog.csdn.net/weixin_62375676/article/details/144803897

相关文章

  • Golang技术在机器学习中使用的库和工具
    AI编程助手AI免费问答首页课程路径文章PHP培训精品课下载最新更新技术文章>后端开发>GolangGolang技术在机器学习中使用的库和工具WBOY2024-05-0821:42965浏览原创go语言中适用于机器学习的库和工具包括:tensorflow:流行的机器学习库,提供构建、训练和部署模型的......
  • 基于Python控制台开发的图像灰度化和滤波处理系统
    以下是一个适合大一、大二学生基于Python控制台开发的图像灰度化和滤波处理系统的课程设计程序。该程序使用Python的Pillow和NumPy库,实现了加载图像、灰度化处理和应用滤波操作等功能,提供一个控制台交互的用户界面。程序功能描述加载图像:从用户提供的文件路径加载图像。显示......
  • 10个简单但很有用的Python装饰器
    10个简单但很有用的Python装饰器https://zhuanlan.zhihu.com/p/6474274711、@timer:测量执行时间优化代码性能是非常重要的。@timer装饰器可以帮助我们跟踪特定函数的执行时间。通过用这个装饰器包装函数,我可以快速识别瓶颈并优化代码的关键部分。下面是它的工作原理:impor......
  • python 赋值、深拷贝浅拷贝及切片使用
    赋值、深浅拷贝先复习一下赋值与深浅拷贝i=[1,2,1,3,[1,2]]j=i#赋值k=i.copy()#浅拷贝m=copy.deepcopy(i)#深拷贝#赋值,二者物理地址相同,一方变化另一方同步变化j.pop(0)print(i,j)[2,1,3,[1,2]][2,1,3,[1,2]]#取浅拷贝,二者物理......
  • Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
    近期Python生态系统发生了重要变化,特别是在包管理领域。Anaconda对其商业许可证政策进行了调整,要求大型非营利组织(员工超过200人)需要为使用其默认包仓库的每位用户获取商业许可。这一变化促使开发社区开始寻找更开放的解决方案,特别是考虑到Python本身及其大多数包都是开源的这一事......
  • 【故障诊断】【pytorch】基于CNN-LSTM故障分类的轴承故障诊断研究[西储大学数据](Pytho
         ......
  • 8天学习python笔记
    day01计算机基础和环境搭建1.计算机基础1.1基本概念计算机的组成计算机由多个硬件组合而成,常见的硬件有:cpu,硬盘,内存,网卡,显示器,机箱,电源....注意事项:机械将零件组合在一起,他们之间是无法进行的协作。操作系统windos:生态好,工具多,收费,略慢linux:资源占用少,免费,工具少m......
  • Python 潮流周刊#83:uv 的使用技巧(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,2则热门讨论,全文2300字。以下是本期摘要:......
  • Python Cookbook(第3版)中文版-PDF免费下载
    PythonCookbook(第3版)中文版-PDF免费下载适读人群:Python程序开发人员、编程爱好者、在校大学生电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:https://item.jd.com/13897579.htmlPython图书升级版本,Python编程从入门到实践,涵盖Python3.3,包含大量实用Pyt......
  • 《100天学习Python:从入门到精通》——第2天:Python数据类型
    大家好啊,今天是我创作的第二天了,今天我就来和大家分享一下关于Python的各种数据类型。首先,今天介绍的代码里的函数和类都可以在builtins.py里面找到,builtins.py是Python的最基础的一些函数以及类定义的一个程序。一.int类大家应该看过这么一段程序吧:a='1'a=int(a)这就是......