【机器学习PAI实践一】搭建心脏病预测案例
產(chǎn)品地址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2
一、背景
心臟病是人類健康的頭號(hào)殺手。全世界1/3的人口死亡是因心臟病引起的,而我國(guó),每年有幾十萬(wàn)人死于心臟病。 所以,如果可以通過提取人體相關(guān)的體側(cè)指標(biāo),通過數(shù)據(jù)挖掘的方式來分析不同特征對(duì)于心臟病的影響,對(duì)于預(yù)測(cè)和預(yù)防心臟病將起到至關(guān)重要的作用。本文將會(huì)通過真實(shí)的數(shù)據(jù),通過阿里云機(jī)器學(xué)習(xí)平臺(tái)搭建心臟病預(yù)測(cè)案例。
二、數(shù)據(jù)集介紹
數(shù)據(jù)源: UCI開源數(shù)據(jù)集heart_disease
針對(duì)美國(guó)某區(qū)域的心臟病檢查患者的體測(cè)數(shù)據(jù),共303條數(shù)據(jù)。具體字段如下表:
| age | 年齡 | string | 對(duì)象的年齡,數(shù)字表示 |
| sex | 性別 | string | 對(duì)象的性別,female和male |
| cp | 胸部疼痛類型 | string | 痛感由重到無typical、atypical、non-anginal、asymptomatic |
| trestbps | 血壓 | string | 血壓數(shù)值 |
| chol | 膽固醇 | string | 膽固醇數(shù)值 |
| fbs | 空腹血糖 | string | 血糖含量大于120mg/dl為true,否則為false |
| restecg | 心電圖結(jié)果 | string | 是否有T波,由輕到重為norm、hyp |
| thalach | 最大心跳數(shù) | string | 最大心跳數(shù) |
| exang | 運(yùn)動(dòng)時(shí)是否心絞痛 | string | 是否有心絞痛,true為是,false為否 |
| oldpeak | 運(yùn)動(dòng)相對(duì)于休息的ST depression | string | st段壓數(shù)值 |
| slop | 心電圖ST segment的傾斜度 | string | ST segment的slope,程度分為down、flat、up |
| ca | 透視檢查看到的血管數(shù) | string | 透視檢查看到的血管數(shù) |
| thal | 缺陷種類 | string | 并發(fā)種類,由輕到重norm、fix、rev |
| status | 是否患病 | string | 是否患病,buff是健康、sick是患病 |
三、數(shù)據(jù)探索流程
數(shù)據(jù)挖掘流程如下:
整體實(shí)驗(yàn)流程:
1.數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理也叫作數(shù)據(jù)清洗,主要在數(shù)據(jù)進(jìn)入算法流程前對(duì)數(shù)據(jù)進(jìn)行去噪、填充缺失值、類型變換等操作。本次實(shí)驗(yàn)的輸入數(shù)據(jù)包括14個(gè)特征和1個(gè)目標(biāo)隊(duì)列。需要解決的場(chǎng)景是根據(jù)用戶的體檢指標(biāo)預(yù)測(cè)是否會(huì)患有心臟病,每個(gè)樣本只有患病或不患病兩種,是分類問題。因?yàn)楸敬畏诸悓?shí)驗(yàn)選用的是線性模型邏輯回歸,要求輸入的特征都是double型的數(shù)據(jù)。
輸入數(shù)據(jù)展示:
我們看到有很多數(shù)據(jù)是文字描述的,在數(shù)據(jù)預(yù)處理的過程中我們需要根據(jù)每個(gè)字段的含義將字符型轉(zhuǎn)為數(shù)值。
1)二值類的數(shù)據(jù)
二值類的比較容易轉(zhuǎn)換,如sex字段有兩種表現(xiàn)形式female和male,我們可以將female表示成0,把male表示成1。
2)多值類的數(shù)據(jù)
比如cp字段,表示胸部的疼痛感,我們可以通過疼痛的由輕到重映射成0~3的數(shù)值。
數(shù)據(jù)的預(yù)處理通過sql腳本來實(shí)現(xiàn),具體請(qǐng)參考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.特征工程
特征工程主要是包括特征的衍生、尺度變化等。本例中有兩個(gè)組件負(fù)責(zé)特征工程的部分。
1)過濾式特征選擇
主要是通過這個(gè)組件判斷每個(gè)特征對(duì)于結(jié)果的影響,通過信息熵和基尼系數(shù)來表示,可以通過查看評(píng)估報(bào)告來顯示最終的結(jié)果。
2)歸一化
因?yàn)楸敬螌?shí)驗(yàn)選擇的是通過邏輯回歸二分類來進(jìn)行模型訓(xùn)練,需要每個(gè)特征去除量綱的影響。歸一化的作用是將每個(gè)特征的數(shù)值范圍變?yōu)?到1之間。歸一化的公式為result=(val-min)/(max-min)。
歸一化結(jié)果:
3.模型訓(xùn)練和預(yù)測(cè)
本次實(shí)驗(yàn)是監(jiān)督學(xué)習(xí),因?yàn)槲覀円呀?jīng)知道每個(gè)樣本是否患有心臟病,所謂監(jiān)督學(xué)習(xí)就是已知結(jié)果來訓(xùn)練模型。解決的問題是預(yù)測(cè)一組用戶是否患有心臟病。
1)拆分
首先通過拆分組件將數(shù)據(jù)分為兩部分,本次實(shí)驗(yàn)按照訓(xùn)練集和預(yù)測(cè)集7:3的比例拆分。訓(xùn)練集數(shù)據(jù)流入邏輯回歸二分類組件用來訓(xùn)練模型,預(yù)測(cè)集數(shù)據(jù)進(jìn)入預(yù)測(cè)組件。
2)邏輯回歸二分類
邏輯回歸是一個(gè)線性模型,在這里通過計(jì)算結(jié)果的閾值實(shí)現(xiàn)分類。具體的算法詳情推薦大家在網(wǎng)上或者書籍中自行了解。邏輯回歸訓(xùn)練好的模型可以在模型頁(yè)簽中查看。
3)預(yù)測(cè)
預(yù)測(cè)組件的兩個(gè)輸入分別是模型和預(yù)測(cè)集。預(yù)測(cè)結(jié)果展示的是預(yù)測(cè)數(shù)據(jù)、真實(shí)數(shù)據(jù)、每組數(shù)據(jù)不同結(jié)果的概率。
4.評(píng)估
通過混淆矩陣組件可以評(píng)估模型的準(zhǔn)確率等參數(shù),
通過此組件可以方便的通過預(yù)測(cè)的準(zhǔn)確性來評(píng)估模型。
四.總結(jié)
通過以上數(shù)據(jù)探索的流程我們可以得到以下的結(jié)論。
1)特征權(quán)重
我們可以通過過濾式特征選擇得到每個(gè)特征對(duì)于結(jié)果的權(quán)重。
-可以看出thalach(心跳數(shù))對(duì)于是否發(fā)生心臟病影響最大。
-性別對(duì)于心臟病沒有影響
2)模型效果
通過上文提供的14個(gè)特征,可以達(dá)到百分之八十多的心臟病預(yù)測(cè)準(zhǔn)確率。模型可以用來做預(yù)測(cè),輔助醫(yī)生預(yù)防和治療心臟病。
五、其它
免費(fèi)體驗(yàn):阿里云數(shù)加機(jī)器學(xué)習(xí)平臺(tái)
總結(jié)
以上是生活随笔為你收集整理的【机器学习PAI实践一】搭建心脏病预测案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PM九步法
- 下一篇: 【机器学习PAI实践二】人口普查统计