问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于机器学习的心力衰竭疾病分析研究

创作时间:
作者:
@小白创作中心

基于机器学习的心力衰竭疾病分析研究

引用
CSDN
1.
https://blog.csdn.net/ZSW1218/article/details/144513056

本文介绍了一个基于机器学习的心力衰竭疾病分析研究项目。通过数据预处理、特征工程、模型训练和评估等步骤,展示了如何利用机器学习技术对心力衰竭风险进行预测。实验结果表明,随机森林模型在预测心力衰竭风险方面表现最佳。

研究过程中,我们对数据进行了全面的预处理,包括缺失值处理、数据标准化和特征选择。然后,利用特征工程对数据进行进一步处理,以提高模型性能。最终,模型的表现通过准确率、精确率、召回率和F1分数等指标进行评估。

实验结果表明,所选模型在预测心力衰竭风险方面表现出色。我们的研究为心力衰竭的早期诊断和预防提供了一种有效的工具。

项目数据

心力衰竭数据集(Heart Failure Dataset)通常用于分析心力衰竭患者的生存情况和相关风险因素。

该数据集来自Kaggle。

Kaggle是一个数据科学竞赛平台,提供了大量数据集供用户下载和使用。

心力衰竭数据集也可以在Kaggle平台上找到,并且通常伴有详细的描述和相关的竞赛。

数据集包含心力衰竭患者的多种属性。以下是数据集的列:

(1)序号: 患者的序号。

(2)年龄: 患者的年龄。

(3)贫血: 患者是否患有贫血(0 = 否,1 = 是)。

(4)肌酸激酶: 血液中的CPK酶水平(单位:mcg/L)。

(5)糖尿病: 患者是否患有糖尿病(0 = 否,1 = 是)。

(6)射血分数: 每次心脏收缩时血液离开心脏的百分比。

(7)高血压: 患者是否患有高血压(0 = 否,1 = 是)。

(8)血小板: 血液中的血小板计数(单位:千个血小板/mL)。

(9)血清肌酐: 血液中的血清肌酐水平(单位:mg/dL)。

(10)性别: 患者的性别(0 = 女,1 = 男)。

(11)吸烟: 患者是否吸烟(0 = 否,1 = 是)。

(12)死亡: 患者在随访期间是否死亡(0 = 否,1 = 是)。

算法流程

运行效果

运行 代码.ipynb

1.数据可视化

我们需要对数据进行可视化,在不同维度上展示数据的分布情况,以便更好地了解数据的结构和趋势。我们使用Seaborn和Matplotlib库来实现可视化效果。

(1)通过age与death列的相关性

death age count 直方图

通过变量x=’age’、要根据的变量hue=’death’绘制直方图展示了不同年龄区间的数据量Count。

(2)通过ejection fraction与death列的相关性

death ejection fraction count 直方图

通过变量x=’ ejection fraction’、要根据的变量hue=’death’绘制直方图展示了不同射血分数区间的数据量Count。

(3) 通过creatinine phosphokinase与death列的相关性

death creatinine phosphokinase count 直方图

通过变量x=‘creatinine phosphokinase ‘、要根据的变量hue=’death’绘制直方图展示了不同肌酸磷酐脢区间的数据量Count。

(4) 通过platelets与death列的相关性

death platelets count 直方图

(5)通过变量x=’ platelets’、要根据的变量hue=’death’绘制直方图展示了不同血小板区间的数据量Count。

death serum creatinine count 直方图

通过变量x=’ platelets’、要根据的变量hue=’serum creatinine’绘制直方图展示了不同血清肌酐区间的数据量Count。

2.特征分析

均以选取其中的特征为例,而在实际操作中是分析全部特征。

(1)特征death sex age 箱线图

在我们这里是”death”和”sex”下的数值数据(在这里是”age”)的分布情况。

箱线图由一个矩形框和一组线组成。矩形框表示数据的中间50%范围,线表示数据的整体分布情况。箱线图可以显示出数据的中位数、上下四分位数、异常值等信息。通过箱线图可以进行可视化展示。

(2)特征death serumcreative 核密度估计图

我们通过对数据集(Heart_Failure_Details1.csv)中的”death”属性进行分组,并且使用”serum creative”属性进行核密度估计的阴影绘制。阴影的填充程度取决于密度的高低。将”serum creative”属性在不同”death”值下的分布可视化出来。

3. 特征相关性分析

查看热力图,判断特征相关性。

我们使用histplot方法可视化age属性在death上的分布情况,这可以告诉我们年龄是否与心力衰竭有关。接着,我们使用boxplot方法可视化age和sex的关系以及它们与死亡风险的关系。然后,我们使用FacetGrid和kdeplot方法来可视化血清肌酐
(serum_creatinine)在death上的分布,根据这个分布,我们可以分析血清肌酐和死亡风险之间的关系。最后,我们使用heatmap方法来查看各个特征之间的相关性分析。

4. 模型的构建与训练

在数据分析完之后,我们开始构建模型。我们首先把数据集分成训练集和测试集,以便评估模型的精度和泛化性能。我们使用sklearn库的train_test_split方法将数据集分成80%的训练集和20%的测试集。然后,我们使用KNN和逻辑回归算法模型来分类分析

5.模型评估

ROC曲线

我们使用评估指标来评估模型的精度和泛化性能。我们使用sklearn库的confusion_matrix和classification_report方法来计算预测结果的精确性和召回率。我们还使用ROC曲线和AUC指标来评估模型的好坏。

我们通过使用classification_report方法输出每个模型的性能指标,包括精度、召回率和F1得分。我们还使用confusion_matrix方法输出混淆矩阵,以便更好地了解模型在KNN情况下的准确性。最后我们还通过ROC曲线和AUG指标对模型的性能进行评估。

(1)岭回归模型的ROC曲线

(2)逻辑回归的ROC曲线

(3)决策树的ROC曲线

(4)随机森林的ROC曲线

(5)支持向量机的ROC曲线

(6)朴素贝叶斯的ROC曲线

(7)KNN的ROC曲线

我们首先使用predict_proba方法预测结果概率,并使用roc_curve计算出不同设定的阈值下的真阳性率和假阳性率。使用auc方法计算曲线下面积,即AUC指标。然后,我们使用Matplotlib库绘制出每个模型的ROC曲线,并在图表中展示了AUC指标。在通过两种不同的算法模型,我们可以通过看ROC曲线、AUC面积以及准确性的比率可以看出随机森林性能最好的。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号