心脏病严重影响人们的生命健康,如果可以通过人体相关体测指标,分析不同特征对心脏病的影响,则可以有效预防心脏病。本实验基于真实的心脏病患者体侧数据,为您介绍如何通过数据挖掘算法构建心脏病预测模型。

数据挖掘流程

数据挖掘流程

数据集

本实验的数据集为UCI开源数据集,详情请参见Heart Disease Data Set。该数据集包含了303条美国某区域的心脏病检查患者的体测数据,具体字段如下。
字段名 类型 描述
age STRING 对象的年龄。
sex STRING 对象的性别,取值为femalemale
cp STRING 胸部疼痛类型,痛感由重到轻依次为typicalatypicalnon-anginalasymptomatic
trestbps STRING 血压。
chol STRING 胆固醇。
fbs STRING 空腹血糖。如果血糖含量大于120mg/dl,则取值为true,否则取值为false
restecg STRING 心电图结果是否有T波,由轻到重依次为normhyp
thalach STRING 最大心跳数。
exang STRING 是否有心绞痛。true表示有心绞痛,false表示没有心绞痛。
oldpeak STRING 运动相对于休息的ST Depression,即ST段压值。
slop STRING 心电图ST Segment的倾斜度,程度取值包括downflatup
ca STRING 透视检查发现的血管数。
thal STRING 病发种类,由轻到重依次为normfixrev
status STRING 是否患病。buff表示健康,sick表示患病。

心脏病预测

  1. 进入PAI-Studio控制台。
    1. 登录PAI控制台
    2. 在左侧导航栏,选择模型开发和训练 > Studio-可视化建模
    3. PAI可视化建模页面,单击进入机器学习进入机器学习
  2. 构建实验。
    1. 在PAI-Studio控制台的左侧导航栏,单击首页
    2. 模板列表,单击心脏病预测案例下的从模板创建
    3. 新建实验对话框,配置参数(可以全部使用默认参数)。
      参数 描述
      名称 输入心脏病预测案例
      项目 不支持修改。
      描述 输入包括数据预处理、特征工程、模型训练及预测的机器学习全流程
      位置 选择我的实验
    4. 单击确定
    5. 可选:等待大约十秒钟,在PAI-Studio控制台的左侧导航栏,单击实验
    6. 可选:我的实验下,单击心脏病预测案例_XX
      其中我的实验为已配置的实验位置心脏病预测案例_XX为已配置的实验名称_XX为系统自动添加的实验序号)。
    7. 系统根据预置的模板,自动构建实验,如下图所示。
      心脏病预测实验
      区域 描述
      数据预处理,主要对数据进行去噪、缺失值填充及类型变换操作。因为每个样本只会患病或健康,所以心脏病预测可以归属于分类问题。本实验的输入数据包括14个特征列和1个目标列,在数据预处理过程中,需要根据每个字段的含义将字符类型转化为数值类型。其中:
      • 二值类数据:以sex字段为例,其取值为femalemale,可以使用0表示female1表示male
      • 多值类数据:以cp字段为例,该参数表示胸部疼痛感,可以将疼痛感由轻到重依次映射为0~3的数值。
      数据预处理的SQL脚本示例如下。
      select age,
      (case sex when 'male' then 1 else 0 end) as sex,
      (case cp when 'angina' then 0  when 'notang' then 1 else 2 end) as cp,
      trestbps,
      chol,
      (case fbs when 'true' then 1 else 0 end) as fbs,
      (case restecg when 'norm' then 0  when 'abn' then 1 else 2 end) as restecg,
      thalach,
      (case exang when 'true' then 1 else 0 end) as exang,
      oldpeak,
      (case slop when 'up' then 0  when 'flat' then 1 else 2 end) as slop,
      ca,
      (case thal when 'norm' then 0  when 'fix' then 1 else 2 end) as thal,
      (case status  when 'sick' then 1 else 0 end) as ifHealth
      from  ${t1};
      特征工程主要包括特征的衍生及尺度变化等功能。本实验首先通过类型转换组件将输入特征转换为DOUBLE类型(因为逻辑回归模型的输入数据必须为DOUBLE类型),然后使用过滤式特征选择组件判断每个特征对于结果的影响(通过信息熵和基尼系数反映其影响)。同时,使用归一化组件将每个特征的数值范围转换为0~1,从而去除量纲对结果的影响,其公式为result=(val-min)/(max-min)
      模型训练和预测:
      1. 使用拆分组件将数据集按照7:3分为训练数据集和预测数据集。
      2. 使用逻辑回归二分类组件训练模型。
      3. 将模型和预测数据集输入至预测组件,进行结果预测。
      使用混淆矩阵二分类评估组件进行模型评估。
  3. 运行实验并查看输出结果。
    1. 单击画布上方的运行
    2. 实验运行结束后,右键单击画布中的逻辑回归二分类-1,在快捷菜单,单击模型选项 > 查看模型,即可查看训练完成的心脏病预测模型。
    3. 右键单击画布中的预测-1,在快捷菜单,单击查看数据,即可查看模型预测结果。
  4. 查看模型效果。
    1. 右键单击画布中的二分类评估-1,在快捷菜单,单击查看评估报告
    2. 评估报告对话框,单击指标数据页签,即可查看模型评估指标数据。
      模型评估结果其中AUC值表示该实验模型的预测准确率达到了90%以上。
    3. 右键单击画布中的混淆矩阵-1,在快捷菜单,单击查看评估报告
    4. 混淆矩阵对话框,单击统计信息页签,即可查看模型准确率等信息。