Heart Disease Dataset
收藏github2024-07-22 更新2024-07-29 收录
下载链接:
https://github.com/micky225/Heart-Disease-Detector
下载链接
链接失效反馈官方服务:
资源简介:
该数据集用于检测心脏病,包含多个变量如年龄、性别、胸痛类型、血压等,共有1025条记录。
This dataset is designed for heart disease detection, containing multiple variables such as age, gender, chest pain type, blood pressure, and others, with a total of 1025 records.
创建时间:
2024-07-19
原始信息汇总
数据集概述
数据集描述
变量描述
- age: 患者的年龄(单位:年)
- sex: 患者的性别(0 = 男性,1 = 女性)
- cp: 胸痛类型:
- 0: 典型心绞痛
- 1: 非典型心绞痛
- 2: 非心绞痛疼痛
- 3: 无症状
- trestbps: 静息血压(单位:mm Hg)
- chol: 血清胆固醇(单位:mg/dl)
- fbs: 空腹血糖水平,高于120 mg/dl(1 = 真,0 = 假)
- restecg: 静息心电图结果:
- 0: 正常
- 1: 有ST-T波异常
- 2: 显示可能或确定的左心室肥大
- thalach: 运动测试中达到的最大心率
- exang: 运动诱发的心绞痛(1 = 是,0 = 否)
- oldpeak: 运动相对于静息诱发的ST段压低
- slope: 运动高峰ST段的斜率:
- 0: 上坡
- 1: 平坦
- 2: 下坡
- ca: 通过荧光透视着色的主要血管数量(0-4)
- thal: 铊压力测试结果:
- 0: 正常
- 1: 固定缺陷
- 2: 可逆缺陷
- 3: 未描述
- target: 心脏病状态(0 = 无疾病,1 = 有疾病)
数据信息
推断:
- 数据条目数: 数据集包含1025条记录,索引范围从0到1024。
- 列数: 数据集有14列,对应患者的各种属性和测试结果。
- 数据类型: 大多数列(13列)是int64类型,只有oldpeak列是float64类型。
- 缺失值: 数据集中没有缺失值,每列都有303个非空条目。
数值变量的汇总统计
数值特征:
- age: 患者的平均年龄约为54.4岁,最小的29岁,最大的77岁。
- trestbps: 平均静息血压约为131.61 mm Hg,范围从94到200 mm Hg。
- chol: 平均胆固醇水平约为246.00 mg/dl,最小值为126,最大值为564 mg/dl。
- thalach: 平均最大心率约为149.11,范围从71到202。
- oldpeak: 平均ST段压低约为1.07,范围从0到6.2。
分类变量的汇总统计
分类特征(对象数据类型):
- sex: 有两个唯一值,女性(表示为1)是最频繁的类别,出现713次。
- cp: 有四种不同类型的胸痛。最常见的是“0”,出现497次。
- fbs: 有两个类别,最频繁的是“0”(表示空腹血糖低于120 mg/dl),出现872次。
- restecg: 有三个唯一结果。最常见的结果是“1”,出现513次。
- exang: 有两个唯一值。最频繁的值是“0”(表示无运动诱发的心绞痛),出现608次。
- slope: 有三种不同的斜率类型。最频繁的斜率类型是“1”,出现482次。
- ca: 有五个唯一值,表示主要血管着色的数量,“0”是最频繁的,出现578次。
- thal: 有四个唯一结果。最常见的是“2”(表示可逆缺陷),出现544次。
- target: 有两个唯一值,表示心脏病的有无。值“1”(表示有心脏病)是最频繁的,出现526次。
探索性数据分析
探索性数据分析(EDA)
1. 单变量分析:
- 这里,我们将关注一次一个特征,以了解其分布和范围。
2. 双变量分析:
- 在这一步中,我们将探索每个特征与目标变量之间的关系。
- 这有助于我们了解每个特征对目标结果的重要性和影响。
目标:
- 通过这两个步骤,我们旨在深入了解数据的个体特征。
- 此外,我们将探索每个特征如何与我们预测目标变量的主要目标相关联。
单变量分析
可视化数值数据:
- 直方图用于深入了解每个特征的分布。
- 这使我们能够理解数据集分布的中心趋势、范围和形状。
可视化分类数据:
- 条形图用于可视化每个类别的频率。
- 这提供了每个类别在其相应特征中的突出程度的清晰表示。
数值变量的单变量分析
年龄 (age):
- 分布有些均匀,但在50多岁有一个峰值。
- 平均年龄约为54.43岁,标准差为9.08岁。
静息血压 (trestbps):
- 大多数个体的静息血压集中在120-145 mm Hg。
- 平均静息血压约为131.61 mm Hg,标准差为17.52 mm Hg。
血清胆固醇 (chol):
- 大多数个体的胆固醇水平在200到300 mg/dl之间。
- 平均胆固醇水平约为246.00 mg/dl,标准差为51.59 mg/dl。
最大心率 (thalach):
- 大多数个体在压力测试中达到的心率在140到170 bpm之间。
- 平均心率约为149.11 bpm,标准差为23.01 bpm。
ST段压低 (oldpeak):
- 大多数值集中在0附近,表明许多个体在运动中没有经历显著的ST段压低。
- 平均ST段压低值为1.07,标准差为1.18。
总体:
- 通过查看数值特征的直方图并与提供的特征描述进行交叉参考,一切都显得一致且在预期范围内。
- 数值变量中似乎没有任何明显的噪声或不可信的值。
分类变量的单变量分析
性别 (sex):
- 数据集主要是女性,占绝大多数。
胸痛类型 (cp):
- 数据集显示患者有不同类型的胸痛。类型0(典型心绞痛)似乎是最常见的,但确切的分布可以从条形图中推断。
空腹血糖 (fbs):
- 绝大多数患者的空腹血糖水平低于120 mg/dl,表明高血糖在这个数据集中不是一个常见条件。
静息心电图结果 (restecg):
- 结果显示不同的静息心电图结果,某些类型比其他类型更常见。确切的分布可以从图中推断。
运动诱发的心绞痛 (exang):
- 大多数患者没有经历运动诱发的心绞痛,这表明这可能是这个数据集中患者的一个不常见症状。
运动高峰ST段的斜率 (slope):
- 数据集显示不同的斜率类型。特定类型可能更常见,其分布可以从条形图中推断。
主要血管着色的数量 (ca):
- 大多数患者有较少的主要血管着色,“0”是最频繁的。
铊压力测试结果 (thal):
- 数据集显示不同的铊压力测试结果。一个特定类型似乎更常见,但确切的分布可以从图中看到。
心脏病的有无 (target):
- 数据集在心脏病的有无方面几乎是平衡的,约51.3%有心脏病,48.7%没有。
双变量分析
数值特征 vs 目标变量
年龄 (age):
- 分布显示患有心脏病的患者平均年龄略低于无心脏病的患者。无心脏病患者的平均年龄较高。
静息血压 (trestbps):
- 两类别的分布在KDE图中重叠,平均值几乎相同,表明该特征的区分能力有限。
血清胆固醇 (chol):
- 两类别的胆固醇水平分布相当接近,但患有心脏病的患者的平均胆固醇水平略低。
最大心率 (thalach):
- 分布有明显的差异。患有心脏病的患者在压力测试中往往达到更高的最大心率,而无心脏病的患者则较低。
ST段压低 (oldpeak):
- ST段压低在患有心脏病的患者中明显较低。他们的分布峰值接近零,而无心脏病类别的分布更广泛。
分类 vs 目标
主要血管数量 (ca):
- 大多数患有心脏病的患者有较少的主要血管着色。随着着色血管数量的增加,患有心脏病的比例趋于减少。特别是,着色血管为0的患者有更高的比例患有心脏病。
胸痛类型 (cp):
- 不同类型的胸痛显示出不同的心脏病比例。值得注意的是,类型1、2和3的心脏病比例高于类型0。这表明胸痛类型在预测疾病时可能是有影响力的。
运动诱发的心绞痛 (exang):
- 未经历运动诱发心绞痛(0)的患者显示出更高的心脏病比例,相比那些经历心绞痛的患者(1)。这个特征似乎对目标有显著影响。
空腹血糖 (fbs):
- 空腹血糖高于120 mg/dl(1)和低于120 mg/dl(0)的分布相对相似,表明空腹血糖可能在心脏病预测中影响有限。
静息心电图结果 (restecg):
- 类型1显示出更高的心脏病比例,表明这个特征可能在结果中有一些影响。
性别 (sex):
- 女性(1)显示出较低的心脏病比例,相比男性(0)。这表明性别在预测心脏病时是一个有影响力的因素。
运动高峰ST段的斜率 (slope):
- 斜率类型2有显著更高的心脏病比例,表明它可能是预测中的一个重要因素。
铊压力测试结果 (thal):
- 可逆缺陷类别(2)有更高的心脏病比例,相比其他类别,强调了其在预测中的重要性。
总结基于可视化表示:
- 对目标的高影响: ca, cp, exang, sex, slope, thal
- 对目标的中等影响: restecg
- 对目标的低影响: fbs
数据预处理
去除异常值
使用pd.get_dummies()进行分类编码
模型评估
- 数据被分成训练集和测试集,使用scikit-learn库中的train_test_split()函数。
- 80%的数据用于训练,20%用于测试。
使用的模型
逻辑回归
- 目的:逻辑回归是一个用于二分类任务的线性模型。
- 实现:使用scikit-learn的LogisticRegression类实现。
- 参数:
- penalty: 正则化项(l1或l2)。
- C: 正则化强度的倒数。
决策树分类器
- 目的:决策树是非线性模型,用于分类任务。
- 实现:使用scikit-learn的DecisionTreeClassifier类实现。
- 参数:
- criterion: 分裂标准(gini或entropy)。
- max_depth: 树的最大深度。
随机森林分类器
- 目的:随机森林是结合多个决策树的集成模型,用于提高性能。
- 实现:使用scikit-learn的RandomForestClassifier类实现。
- 参数:
- n_estimators: 森林中的树数量。
- max_depth: 树的最大深度。
K-近邻分类器
- 目的:K-近邻是一个非参数方法,用于分类任务。
- 实现:使用scikit-learn的KNeighborsClassifier类实现。
- 参数:
- n_neighbors: 考虑的邻居数量。
- weights: 预测中使用的权重函数。
支持向量分类器(SVC)
- 目的:支持向量分类器是一个用于二分类任务的线性模型。
- 实现:使用scikit-learn的SVC类实现。
- 参数:
- kernel: 使用的核函数(linear, poly, rbf, sigmoid)。
- C: 正则化参数。
模型评估
模型评估基于样本正确预测为正(真阳性),正确预测为负(真阴性),错误预测为正(假阳性)和错误预测为负(假阴性)。 其中TP = 真阳性,TN = 真阴性,FP = 假阳性,FN = 假阴性
评估指标
- 准确率: 准确率衡量模型预测的整体正确性。它是正确预测实例与总实例的比率。
准确率 = (TP + TN) / (TP + TN + FP + FN)
- 精确度: 精确度衡量模型做出的所有正预测中真阳性的比例。它量化了被预测为正的实例中实际为正的比例。
精确度 = TP / (TP + FP)
- 召回率: 召回率衡量所有实际正实例中真阳性的比例。它量化了模型正确识别的实际正实例的比例。
召回率 = TP / (TP + FN)
- F1分数: F1分数是精确度和召回率的调和平均,提供了一个平衡的度量,考虑了这两个指标。它可以作为一个单一的指标来总结模型的性能。
F1分数 = 2 * (精确度 * 召回率) / (精确度 + 召回率)
最佳模型性能
- 支持向量分类器(SVC)模型在心脏病检测中取得的结果总结。
评估结果(SVC)
- 准确率:0.99
- 精确度:1.00
- 召回率:0.98
- F1分数:0.99
解释
SVC模型在准确分类心脏病实例方面表现出卓越的性能。准确率为0.99,意味着模型在99%的情况下正确预测心脏病的有无。精确度为1.00表明模型做出的所有正预测确实是真阳性,没有假阳性。同样,召回率为0.98表明模型正确识别了98%的所有真阳性病例。F1分数为0.99进一步确认了模型在精确度和召回率方面的平衡性能。
模型保存
训练好的SVC模型被保存以供将来使用。
搜集汇总
数据集介绍

构建方式
该数据集的构建基于对患者多种生理和临床指标的收集与整理。具体而言,数据集包含了14个特征,涵盖了患者的年龄、性别、胸痛类型、静息血压、胆固醇水平、空腹血糖、静息心电图结果、最大心率、运动诱发的胸痛、运动相对静息的ST段压低、ST段峰值斜率、主要血管数量、铊应激测试结果以及目标变量(是否患有心脏病)。这些数据通过临床检测和问卷调查等方式获取,确保了数据的准确性和可靠性。数据集的构建过程中,还进行了缺失值的检查和处理,确保每一列都具有完整的非空条目,从而为后续的分析和建模提供了坚实的基础。
特点
该数据集具有多个显著特点。首先,数据集包含了丰富的生理和临床特征,这些特征能够全面反映患者的健康状况,为心脏病的预测提供了多维度的信息支持。其次,数据集在特征设计上考虑了不同类型的数据,包括数值型和分类型变量,这使得数据分析和模型构建更加灵活和全面。此外,数据集的样本量适中,共有1025条记录,涵盖了从29岁到77岁的年龄范围,确保了数据的代表性和广泛性。最后,数据集在构建过程中进行了详尽的探索性数据分析,通过直方图和条形图等可视化手段,揭示了各特征的分布和与目标变量的关系,为后续的模型训练和评估提供了重要的参考。
使用方法
使用该数据集进行心脏病预测模型的开发时,首先需要对数据进行预处理,包括处理异常值、编码分类变量以及标准化数值变量。随后,可以使用多种机器学习算法进行模型训练,如逻辑回归、决策树、随机森林、K近邻和支持向量机等。在模型训练过程中,建议采用交叉验证和网格搜索等技术来优化模型参数,以提高模型的泛化能力和预测精度。模型训练完成后,可以通过测试集对模型进行评估,使用准确率、精确率、召回率和F1分数等指标来衡量模型的性能。最终,选择性能最佳的模型进行部署,并保存模型以供后续使用。通过这一系列步骤,可以有效地利用该数据集进行心脏病预测,从而为临床决策提供科学依据。
背景与挑战
背景概述
心脏疾病数据集(Heart Disease Dataset)旨在通过机器学习模型预测个体是否患有心脏疾病。该数据集的核心研究问题在于早期检测心脏疾病,以便及时干预和治疗,从而显著改善患者预后。数据集包含了1025个样本,涵盖了14个特征,如年龄、性别、胸痛类型、静息血压、胆固醇水平等。这些特征为构建预测模型提供了丰富的信息基础。该数据集的创建和应用在心脏疾病诊断领域具有重要意义,为研究人员提供了一个标准化的数据平台,以开发和验证心脏疾病预测模型。
当前挑战
心脏疾病数据集在构建和应用过程中面临多项挑战。首先,数据集中的特征具有不同的数据类型和语义,需要进行适当的预处理和特征工程,以确保模型能够有效利用这些信息。其次,数据集中的某些特征可能存在缺失值或异常值,需要进行数据清洗和异常处理。此外,心脏疾病的预测涉及多个复杂的生物医学因素,如何准确捕捉这些因素之间的关系并构建有效的预测模型是一个重要挑战。最后,尽管数据集提供了丰富的特征,但如何在实际临床环境中验证和应用这些模型,确保其可靠性和实用性,也是一个亟待解决的问题。
常用场景
经典使用场景
在心血管疾病的早期诊断和预防领域,Heart Disease Dataset 被广泛应用于开发和验证机器学习模型。该数据集通过整合患者的年龄、性别、胸痛类型、血压、胆固醇水平等多项关键生理指标,为研究人员提供了一个全面的视角来探索心脏疾病的风险因素。通过构建预测模型,研究人员能够识别出潜在的高风险个体,从而实现早期干预和治疗,显著提升患者的预后效果。
解决学术问题
Heart Disease Dataset 解决了心血管疾病早期诊断中的关键学术问题,即如何通过多维度的生理数据来准确预测心脏疾病的发生。该数据集的引入,使得研究人员能够深入探讨不同生理指标与心脏疾病之间的复杂关系,从而开发出更为精准的预测模型。这不仅推动了心血管疾病预测模型的研究进展,也为临床实践提供了有力的理论支持。
衍生相关工作
基于 Heart Disease Dataset,研究人员开发了多种心脏疾病预测模型,如支持向量机(SVC)、决策树、随机森林等。这些模型在学术界和工业界都得到了广泛应用,并衍生出了一系列相关工作。例如,有研究通过集成学习方法进一步提升了预测模型的准确性,还有研究探讨了如何利用深度学习技术来挖掘数据中的潜在特征,从而提高预测模型的性能。
以上内容由遇见数据集搜集并总结生成



