数据来源:https ://www.kaggle.com/datasets/andrewmvd/heart-failure-clinical-data
该项目涉及利用来自 Kaggle 的数据集,根据血清肌酐水平、射血分数、年龄、是否存在贫血、糖尿病和其他相关因素等各种参数来预测心力衰竭患者的生存概率。
关于数据集:
心血管疾病 (CVD) 是全球死亡的主要原因,估计每年导致 1790 万人死亡,占全球所有死亡人数的 31%。心力衰竭是与 CVD 相关的常见事件,该数据集包含 12 个特征,可用于预测与心力衰竭相关的死亡风险。
采取全民战略来解决烟草使用、不健康饮食、肥胖、缺乏运动和有害使用酒精等行为风险因素,可以预防大多数心血管疾病。
由于一种或多种风险因素(如高血压、糖尿病、高血脂或既往病痛)而患有心血管疾病或心血管高风险的人需要及早识别和管理,而机器学习模型可以在其中发挥关键作用。
数据检查
数据字典:
- 功能详情
2. 布尔特征
•性别,0 = 女性,男性 = 1
•糖尿病,0 = 否,1 = 是
•贫血,0 = 否,1 = 是
•高血压,0 = 否,1 = 是
•吸烟,0 = 否, 1 = 是
• DEATH_EVENT , 0 = 否, 1 = 是
3. 其他信息
• mcg/L: ****微克每升
• mL:微升
• mEq/L:毫当量每升
•时间:这一特殊特征似乎与死亡事件显着相关,但缺乏关于如何该指标是针对每位患者测量的。这种信息的缺乏使得难以将特征准确地合并到分析中。
班级分布/比例
在此数据集中,我们将使用“death_event”列作为我们的类标签。
我们将评估数据集中指定类标签的比例。
观察到我们的数据集略微不平衡且大小有限。因此,我们不能自信地将“准确性”用作我们的主要评分指标。建议考虑替代指标,例如召回率、精度和 f1 分数,特别是对于不平衡的数据集。
“召回率”衡量实际阳性总数中正确阳性预测的数量,它在减少假阴性时特别有用,例如在癌症检测场景中。
“精度”衡量的是总阳性预测中实际阳性中真正阳性的数量,这在减少误报时特别有用,例如在垃圾邮件检测场景中。
一般信息
贫血、糖尿病、高血压、性和吸烟都存储在“str”数据类型中。为了有效地将 TensorFlow 与 Keras 结合使用,有必要将所有分类特征和标签转换为 one-hot 编码向量。
定义 X 和 y
神经网络相对于传统机器学习算法的优势之一是我们不需要进行特征选择。神经网络可以根据它们所训练的数据来学习和调整特征的权重,从而消除了手动特征选择的需要。
拆分数据
将我们的数据集以 70:30 的比例分成训练集和测试集。该random_state参数设置为 7 以确保结果的可重复性。
列变压器
这使您可以一步将不同的转换应用于数据集的不同列。这在处理同时包含数值和分类特征的数据集时很有用,因为每种类型的特征都需要不同类型的转换。
例如,您可能希望将单热编码应用于分类特征,并将标准缩放应用于数字特征。ColumnTransformer允许您一步应用这些转换,并返回一个转换后的数据集,其中所有特征都经过适当转换。
当与管道结合使用以创建简化的数据预处理和模型构建工作流时,此类特别有用。
检查并安装预处理器。
标签编码器
将类/标签转换为从 0 到类数的整数。
Take note:LabelEncoder 按字母顺序为每个类分配一个数值。例如,如果我们有一个带有“No”和“Yes”标签的二进制类,LabelEncoder 会将 0 分配给“No”,将 1 分配给“Yes”。
设计用于分类的深度学习模型
该模型将利用“adam”优化器并寻求最小化“分类交叉熵”损失。使用“召回率”作为我们的指标。我们需要降低假阴性率,因为我们不希望我们的模型预测一个人是消极的,而事实是积极的。