數(shù)據(jù)分享|邏輯回歸、隨機森林、SVM支持向量機預測心臟病風險數(shù)據(jù)和模型診斷可視化|附
原文鏈接:http://tecdat.cn/?p=24973
最近我們被客戶要求撰寫關于心臟病的研究報告,包括一些圖形和統(tǒng)計輸出。
世界衛(wèi)生組織估計全世界每年有 1200 萬人死于心臟病。在美國和其他發(fā)達國家,一半的死亡是由于心血管疾病
簡介
心血管疾病的早期預后可以幫助決定改變高?;颊叩纳罘绞?,從而減少并發(fā)癥。本研究旨在查明心臟病最相關/風險因素,并使用機器學習預測總體風險。
數(shù)據(jù)準備?
來源
該數(shù)據(jù)集?(?查看文末了解數(shù)據(jù)獲取方式?)?來自對居民正在進行的心血管研究。分類目標是預測患者未來是否有 10 年患冠心病 (CHD) 的風險。數(shù)據(jù)集提供了患者的信息。它包括超過 4,000 條記錄和 15 個屬性。
變量
每個屬性都是一個潛在的風險因素。有人口、行為和醫(yī)療風險因素。
人口統(tǒng)計:
? 性別:男性或女性(標量)
? 年齡:患者年齡;(連續(xù) - 盡管記錄的年齡已被截斷為整數(shù),但年齡的概念是連續(xù)的)
行為
? 當前吸煙者:患者是否是當前吸煙者(標量)
? 每天吸煙數(shù):此人一天內(nèi)平均吸煙的香煙數(shù)量。(可以認為是連續(xù)的,因為一個人可以擁有任意數(shù)量的香煙,甚至半支香煙。)
? BP Meds:患者是否服用降壓藥(標量)
?中風:患者之前是否有中風(標量)
?? Hyp:患者是否患有高血壓(標量)
? 糖尿?。夯颊呤欠窕加刑悄虿。肆浚?br>? Tot Chol:總膽固醇水平(連續(xù))
? Sys BP:收縮壓(連續(xù))
? Dia BP:舒張壓(連續(xù))
? BMI:體重指數(shù)(連續(xù))
? 心率:心率(連續(xù) - 在醫(yī)學研究中,心率等變量雖然實際上是離散的,但由于存在大量可能值而被認為是連續(xù)的。)
? 葡萄糖:葡萄糖水平(連續(xù))
預測變量(目標)
? 10 年患冠心病 CHD 的風險(二元:“1”表示“是”,“0”表示“否”)
心臟病預測
#?獲取數(shù)據(jù)rdaa?<-?read.csv(路徑)
#?這邊可以考慮增加變量收縮壓與舒張壓之差、描述收縮壓、舒張壓與高血壓等級的變量#?看數(shù)據(jù)結構str(ata)

#?考慮增加變量bplevelraw_data?<-?sqldf#?對變量類別進行區(qū)分ra_da?<-?mapstr(ra_da?)

數(shù)據(jù)預處理
查看和處理缺失值
#?這里我們使用mice包進行缺失值處理aggr

matplot

點擊標題查閱往期內(nèi)容

R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機森林算法預測心臟病

左右滑動查看更多

01

02

03

04

由上圖可以看出,除了glucose變量,其它變量的缺失比例都低于5%,而glucose變量缺失率超過了10%。對此的處理策略是保留glucose變量的缺失值,直接刪除其它變量的缺失值?,F(xiàn)在處理glucose的缺失值,
#?處理glucose列lee_a?<-?subset?&?!is.na?&?!is.na?&?!is.na?&?!is.na?&?!is.na#?查看glce與其它變量的線性相關性確定mice的填充策略gcog?=?glm(lcse?~?.)smry(glseg)


填充,排除不重要的變量。至于為什么不選diaBP,主要是后面的相關性分析中,這兩個變量會造成多重共線性。
mice%in%??m=5,??"pmm",?mai?=?50,?sd=2333,?pint=?FALSE)#查看填充結果smr(mc_od)

#?查看原始數(shù)據(jù)和插補后的數(shù)據(jù)分布情況epot(mi_md)

sipt(mcod,?pch=12)

#?填充數(shù)據(jù)mi_t?<-?complete
fir_aa$loe?<-?miout$guosesum(is.na(flda))

刪除重復行
#?查看有無重復行并刪除重復行sum(duplicated

comd_ata?<-?comdta[!duplicated(),?]
查看離群點
#查看異常值gplot(coedta)+geom_boxplot(ae(ftr(1),age))

ggplot(copd_dta)+geom_boxplot(aes(factor(1cigDy))

ggplot(coea)+geom_boxplot(aes(factor(1),ttl))
ggplot(colt_ta)+geom_boxplot(aes(factor(1),syBP))
ggplot(comeaa)+geom_boxplot(aes(factor(1),daP))
ggplot()+gem_boxplot(aes(factor(1),BMI))
#?查看cigsPerDaycigs_sub?<-?comled_dta#?查看totChol,刪除異常點#?查看sysBP,?刪除異常點#?查看BMI
totChol: 總膽固醇水平大于240mg/dl已屬于非常高,故刪去水平值為600mg/dl的記錄。sysBP: 去掉收縮壓為295mg/dl的記錄
#?刪除各變量離群點competedata
#?分類型變量列聯(lián)分析ggplot+geom_boxplot
ggplot+geom_boxplot(aes,totChol,fill=TenYerCHD))
cometddata?%>%?fitr?%>%?ggplot
由圖像知,glucose和hearRate變量有不顯著的風險
table1=table
chisq.test
table1

table2=table
chisq.test

table3=table
chisq.test

chisq.test



ggpairs

diaBP和sysBP有多重共線性的問題。?
currentSmoker變量可能不顯著,下面進入模型部分。
模型
#?劃分數(shù)據(jù)集split?=?sample.splittrain?=?subset
邏輯回歸
#?邏輯回歸模型?-?使用所有變量fultaog?=?glm
summary(fulog)


fldaog?=?glm
summary(fuatLg)

prdts?=?predict
glm_le?<-?table
ACCU

隨機森林
rfoel?<-?randomForest#?獲得重要性imprace

相關視頻:Boosting原理與R語言提升回歸樹BRT預測短鰭鰻分布
**
拓端數(shù)據(jù)部落
,贊6
#?選擇重要的因素rfmdel?<-?randomForest#?誤差plot

#?獲取重要性ggplot?+
???geom_bar
???geom_text

這里有患病風險的誤差不降反升,需要探究其中原因
#?繪制分類圖像pred<-predict
pdou_1<-predict??#輸出概率table?<-?tablesum(diag/sum?#預測準確率
plot(margin
SVM支持向量機
#?先進行模型調優(yōu)tud?<-?tune.svm
summary(tud?)


#?使用turning函數(shù)得到最佳參數(shù)設置支持向量機mel.nd?<-?svmcost=tuned$
summary(modted)
#?調用predict函數(shù)基于剛配置好的SVM模型進行類標號的預測:sm.ne.ed?<-?predict
sv.tuedtble?<-?table
sm.ue.tbe
acy.s.vm?<-?sum(diag)/sum
模型診斷
根據(jù)上面三個模型的結果,可以看出預測結果的類別數(shù)量分布非常不均衡
sum
sum(TeYaHD?==?0)
針對這一現(xiàn)象,需要采取方法平衡數(shù)據(jù)集。
數(shù)據(jù)獲取
在下面公眾號后臺回復“心臟病風險數(shù)據(jù)”,可獲取完整數(shù)據(jù)。
本文摘選?《R語言邏輯回歸、隨機森林、SVM支持向量機預測FRAMINGHAM心臟病風險和模型診斷可視化》?,點擊“閱讀原文”獲取全文完整資料。
點擊標題查閱往期內(nèi)容
高維數(shù)據(jù)懲罰回歸方法:主成分回歸PCR、嶺回歸、lasso、彈性網(wǎng)絡elastic net分析基因數(shù)據(jù)分類回歸決策樹交互式修剪和更美觀地可視化分析細胞圖像分割數(shù)據(jù)集
實現(xiàn)廣義相加模型GAM和普通最小二乘(OLS)回歸
貝葉斯線性回歸和多元線性回歸構建工資預測模型
Python支持向量回歸SVR擬合、預測回歸數(shù)據(jù)和可視化準確性檢查實例
邏輯回歸(對數(shù)幾率回歸,Logistic)分析研究生錄取數(shù)據(jù)實例
廣義線性模型glm泊松回歸的lasso、彈性網(wǎng)絡分類預測學生考試成績數(shù)據(jù)和交叉驗證
非線性回歸nls探索分析河流階段性流量數(shù)據(jù)和評級曲線、流量預測可視化
特征選擇方法——最佳子集回歸、逐步回歸
線性回歸和時間序列分析北京房價影響因素可視化案例
貝葉斯分位數(shù)回歸、lasso和自適應lasso貝葉斯分位數(shù)回歸分析免疫球蛋白、前列腺癌數(shù)據(jù)
用加性多元線性回歸、隨機森林、彈性網(wǎng)絡模型預測鮑魚年齡和可視化
PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯和KMEANS聚類用戶畫像
PYTHON集成機器學習:用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網(wǎng)格搜索超參數(shù)優(yōu)化
R語言集成模型:提升樹boosting、隨機森林、約束最小二乘法加權平均模型融合分析時間序列數(shù)據(jù)
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數(shù)據(jù)并高維可視化
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言用邏輯回歸、決策樹和隨機森林對信貸數(shù)據(jù)集進行分類預測
spss modeler用決策樹神經(jīng)網(wǎng)絡預測ST的股票
R語言中使用線性模型、回歸決策樹自動組合特征因子水平
R語言中自編基尼系數(shù)的CART回歸決策樹的實現(xiàn)
R語言用rle,svm和rpart決策樹進行時間序列預測
python在Scikit-learn中用決策樹和隨機森林預測NBA獲勝者
python中使用scikit-learn和pandas決策樹進行iris鳶尾花數(shù)據(jù)分類建模和交叉驗證
R語言里的非線性模型:多項式回歸、局部樣條、平滑樣條、 廣義相加模型GAM分析
R語言用標準最小二乘OLS,廣義相加模型GAM?,樣條函數(shù)進行邏輯回歸LOGISTIC分類
R語言ISLR工資數(shù)據(jù)進行多項式回歸和樣條回歸分析
R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型
R語言用泊松Poisson回歸、GAM樣條曲線模型預測騎自行車者的數(shù)量
R語言分位數(shù)回歸、GAM樣條曲線、指數(shù)平滑和SARIMA對電力負荷時間序列預測R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態(tài)可視化
如何用R語言在機器學習中建立集成模型?
R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測在python 深度學習Keras中計算神經(jīng)網(wǎng)絡集成模型R語言ARIMA集成模型預測時間序列分析R語言基于Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言基于Bootstrap的線性回歸預測置信區(qū)間估計方法
R語言使用bootstrap和增量法計算廣義線性模型(GLM)預測置信區(qū)間
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態(tài)可視化
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
R語言隨機森林RandomForest、邏輯回歸Logisitc預測心臟病數(shù)據(jù)和可視化分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數(shù)據(jù)并高維可視化
Matlab建立SVM,KNN和樸素貝葉斯模型分類繪制ROC曲線
matlab使用分位數(shù)隨機森林(QRF)回歸樹檢測異常值