一、背景

心脏病是人类健康的头号杀手。全世界1/3的人口死亡是因心脏病引起的,而我国,每年有几十万人死于心脏病。 所以,如果可以通过提取人体相关的体侧指标,通过数据挖掘的方式来分析不同特征对于心脏病的影响,对于预测和预防心脏病将起到至关重要的作用。本文将会通过真实的数据,通过阿里云机器学习平台搭建心脏病预测案例。

二、数据集介绍

数据源: UCI开源数据集heart_disease 
针对美国某区域的心脏病检查患者的体测数据,共303条数据。具体字段如下表:

字段名 含义 类型 描述
age 年龄 string 对象的年龄,数字表示
sex 性别 string 对象的性别,female和male
cp 胸部疼痛类型 string 痛感由重到无typical、atypical、non-anginal、asymptomatic
trestbps 血压 string 血压数值
chol 胆固醇 string 胆固醇数值
fbs 空腹血糖 string 血糖含量大于120mg/dl为true,否则为false
restecg 心电图结果 string 是否有T波,由轻到重为norm、hyp
thalach 最大心跳数 string 最大心跳数
exang 运动时是否心绞痛 string 是否有心绞痛,true为是,false为否
oldpeak 运动相对于休息的ST depression string st段压数值
slop 心电图ST segment的倾斜度 string ST segment的slope,程度分为down、flat、up
ca 透视检查看到的血管数 string 透视检查看到的血管数
thal 缺陷种类 string 并发种类,由轻到重norm、fix、rev
status 是否患病 string 是否患病,buff是健康、sick是患病

三、数据探索流程

数据挖掘流程如下: 
 
整体实验流程: 

1.数据预处理

数据预处理也叫作数据清洗,主要在数据进入算法流程前对数据进行去噪、填充缺失值、类型变换等操作。本次实验的输入数据包括14个特征和1个目标队列。需要解决的场景是根据用户的体检指标预测是否会患有心脏病,每个样本只有患病或不患病两种,是分类问题。因为本次分类实验选用的是线性模型逻辑回归,要求输入的特征都是double型的数据。 
输入数据展示: 

我们看到有很多数据是文字描述的,在数据预处理的过程中我们需要根据每个字段的含义将字符型转为数值。 
1)二值类的数据 
二值类的比较容易转换,如sex字段有两种表现形式female和male,我们可以将female表示成0,把male表示成1。 
2)多值类的数据 
比如cp字段,表示胸部的疼痛感,我们可以通过疼痛的由轻到重映射成0~3的数值。

数据的预处理通过sql脚本来实现,具体请参考SQL脚本-1组件,


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};

2.特征工程

特征工程主要是包括特征的衍生、尺度变化等。本例中有两个组件负责特征工程的部分。

1)过滤式特征选择 
主要是通过这个组件判断每个特征对于结果的影响,通过信息熵和基尼系数来表示,可以通过查看评估报告来显示最终的结果。 

2)归一化 
因为本次实验选择的是通过逻辑回归二分类来进行模型训练,需要每个特征去除量纲的影响。归一化的作用是将每个特征的数值范围变为0到1之间。归一化的公式为result=(val-min)/(max-min)。 
归一化结果: 

3.模型训练和预测

本次实验是监督学习,因为我们已经知道每个样本是否患有心脏病,所谓监督学习就是已知结果来训练模型。解决的问题是预测一组用户是否患有心脏病。

1)拆分 
首先通过拆分组件将数据分为两部分,本次实验按照训练集和预测集7:3的比例拆分。训练集数据流入逻辑回归二分类组件用来训练模型,预测集数据进入预测组件。

2)逻辑回归二分类 
逻辑回归是一个线性模型,在这里通过计算结果的阈值实现分类。具体的算法详情推荐大家在网上或者书籍中自行了解。逻辑回归训练好的模型可以在模型页签中查看。 

3)预测 
预测组件的两个输入分别是模型和预测集。预测结果展示的是预测数据、真实数据、每组数据不同结果的概率。

4.评估

通过混淆矩阵组件可以评估模型的准确率等参数, 
 
通过此组件可以方便的通过预测的准确性来评估模型。

四.总结

通过以上数据探索的流程我们可以得到以下的结论。

1)特征权重 
我们可以通过过滤式特征选择得到每个特征对于结果的权重。 
 
-可以看出thalach(心跳数)对于是否发生心脏病影响最大。 
-性别对于心脏病没有影响 
2)模型效果 
通过上文提供的14个特征,可以达到百分之八十多的心脏病预测准确率。模型可以用来做预测,辅助医生预防和治疗心脏病。

与我交流请关注微信公众号:“凡人机器学习”

【机器学习PAI实践一】搭建心脏病预测案例的更多相关文章

  1. [置顶] 【机器学习PAI实践九】如何通过机器学习实现云端实时心脏状况监测

    背景 我们通过之前的案例已经为大家介绍了如何通过常规的体检数据预测心脏病的发生,请见http://blog.csdn.net/buptgshengod/article/details/53609878 ...

  2. 【机器学习PAI实践十二】机器学习算法基于信用卡消费记录做信用评分

    背景 如果你是做互联网金融的,那么一定听说过评分卡.评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应 ...

  3. [置顶] 【机器学习PAI实践五】机器学习眼中的《人民的名义》

    一.背景 最近热播的反腐神剧"人民的名义"掀起来一波社会舆论的高潮,这部电视剧之所能得到广泛的关注,除了老戏骨们精湛的演技,整部剧出色的剧本也起到了关键的作用.笔者在平日追剧之余, ...

  4. [置顶] 【机器学习PAI实践六】金融贷款发放预测

    一.背景 很多农民因为缺乏资金,在每年耕种前会向相关机构申请贷款来购买种地需要的物资,等丰收之后偿还.农业贷款发放问题是一个典型的数据挖掘问题.贷款发放人通过往年的数据,包括贷款人的年收入.种植的作物 ...

  5. [置顶] 【机器学习PAI实践十一】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码

    背景 最近互联网上出现一个热词就是"freestyle",源于一个比拼rap的综艺节目.在节目中需要大量考验选手的freestyle能力,freestyle指的是rapper即兴的 ...

  6. 【机器学习PAI实践二】人口普查统计

    一.背景 感谢大家关注玩转数据系列文章,我们希望通过在阿里云机器学习平台上提供demo数据并搭建相关的实验流程的方式来帮助大家学习如何通过算法来挖掘数据中的价值.本系列文章包含详细的实验流程以及相关的 ...

  7. 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练

    背景 我们在之前的文章中介绍过如何通过PAI内置的TensorFlow框架实验基于Cifar10的图像分类,文章链接:https://yq.aliyun.com/articles/72841.使用Te ...

  8. [置顶] 【机器学习PAI实践三】雾霾成因分析

    一.背景 如果要人们评选当今最受关注话题的top10榜单,雾霾一定能够入选.如今走在北京街头,随处可见带着厚厚口罩的人在埋头前行,雾霾天气不光影响了人们的出行和娱乐,对于人们的健康也有很大危害.本文通 ...

  9. [置顶] 【机器学习PAI实践四】如何实现金融风控

    (本文数据为虚构,仅供实验) 一.背景 本文将针对阿里云平台上图算法模块来进行实验.图算法一般被用来解决关系网状的业务场景.与常规的结构化数据不同,图算法需要把数据整理成首尾相连的关系图谱.图算法更多 ...

随机推荐

  1. weblogic 部署问题定位与解决

    weblogic 做为商用中间件在(EJB.jndi 数据源.日志管理.内存管理.资源配置管理...)  是一些开源免费小型容器无法望其项背的. weblogic 最早由 weblogic Inc. ...

  2. H5在线编辑器优化总结

    花了三个半月做了个编辑器.自己一个人写写CSS,搞搞html,弄下JS,大部分精力都是掏鼓js,时间很仓促,后面领导帮忙写了四个页面逻辑(音频,图片,视频). 很多能优化的,以此文章记录要已经优化和未 ...

  3. [图形学] 习题8.6 线段旋转后使用Cohen-Sutherland算法裁剪

    习题8.6 生成一条比观察窗口对角线还长的线段动画,线段重点位于观察窗口中心,每一帧的线段在上一帧基础上顺时针旋转一点,旋转后用Cohen-Sutherland线段裁剪算法进行裁剪. 步骤: 1 视口 ...

  4. (转载)DBCP、C3P0、Proxool 、 BoneCP开源连接池的比较

    原文链接: http://blog.csdn.net/miclung/article/details/7231553    简介   使用评价  项目主页  DBCP DBCP是一个依赖Jakarta ...

  5. python简单实现websocket

    协议选择的是新的Hybi-10,参考文章如下: http://www.cnblogs.com/zhuweisky/p/3930780.html http://blog.mycolorway.com/2 ...

  6. React周末特训班

    Document #react819_content a { text-decoration: none; color: #ef7b2e; border-bottom: 1px solid #ef7b ...

  7. P1280 尼克的任务

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  8. Wince 创新布局

    如果你的项目是用wince开发并且机器是小型的pda,你可以考虑有这种布局方式. IDE上布局,如图 /// <summary> /// 显示层 /// </summary> ...

  9. Linux 教程 技巧集

    Linux 终端操作技巧 CTRL + U - 剪切光标前的内容 CTRL + K - 剪切光标至行末的内容 CTRL + Y - 粘贴 CTRL + E - 移动光标到行末 CTRL + A - 移 ...

  10. Python爬虫从入门到放弃(十三)之 Scrapy框架的命令行详解

    这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名例子如下: localhost:spider zhaofan$ scrapy start ...