數(shù)據(jù)分享|邏輯回歸、隨機(jī)森林、SVM支持向量機(jī)預(yù)測心臟病風(fēng)險(xiǎn)數(shù)據(jù)和模型診斷可視化|附
原文鏈接:http://tecdat.cn/?p=24973?
最近我們被客戶要求撰寫關(guān)于預(yù)測心臟病風(fēng)險(xiǎn)的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
世界衛(wèi)生組織估計(jì)全世界每年有 1200 萬人死于心臟病。在美國和其他發(fā)達(dá)國家,一半的死亡是由于心血管疾病
簡介
心血管疾病的早期預(yù)后可以幫助決定改變高危患者的生活方式,從而減少并發(fā)癥。本研究旨在查明心臟病最相關(guān)/風(fēng)險(xiǎn)因素,并使用機(jī)器學(xué)習(xí)預(yù)測總體風(fēng)險(xiǎn)。
數(shù)據(jù)準(zhǔn)備?
來源
該數(shù)據(jù)集 來自對居民正在進(jìn)行的心血管研究。分類目標(biāo)是預(yù)測患者未來是否有 10 年患冠心病 (CHD) 的風(fēng)險(xiǎn)。數(shù)據(jù)集提供了患者的信息。它包括超過 4,000 條記錄和 15 個(gè)屬性。
變量
每個(gè)屬性都是一個(gè)潛在的風(fēng)險(xiǎn)因素。有人口、行為和醫(yī)療風(fēng)險(xiǎn)因素。
人口統(tǒng)計(jì):
? 性別:男性或女性(標(biāo)量)
? 年齡:患者年齡;(連續(xù) - 盡管記錄的年齡已被截?cái)酁檎麛?shù),但年齡的概念是連續(xù)的)
行為
? 當(dāng)前吸煙者:患者是否是當(dāng)前吸煙者(標(biāo)量)
? 每天吸煙數(shù):此人一天內(nèi)平均吸煙的香煙數(shù)量。(可以認(rèn)為是連續(xù)的,因?yàn)橐粋€(gè)人可以擁有任意數(shù)量的香煙,甚至半支香煙。)
? BP Meds:患者是否服用降壓藥(標(biāo)量)
?中風(fēng):患者之前是否有中風(fēng)(標(biāo)量)
?? Hyp:患者是否患有高血壓(標(biāo)量)
? 糖尿病:患者是否患有糖尿?。?biāo)量)
? Tot Chol:總膽固醇水平(連續(xù))
? Sys BP:收縮壓(連續(xù))
? Dia BP:舒張壓(連續(xù))
? BMI:體重指數(shù)(連續(xù))
? 心率:心率(連續(xù) - 在醫(yī)學(xué)研究中,心率等變量雖然實(shí)際上是離散的,但由于存在大量可能值而被認(rèn)為是連續(xù)的。)
? 葡萄糖:葡萄糖水平(連續(xù))
預(yù)測變量(目標(biāo))
? 10 年患冠心病 CHD 的風(fēng)險(xiǎn)(二元:“1”表示“是”,“0”表示“否”)
心臟病預(yù)測
#?獲取數(shù)據(jù)rdaa?<-?read.csv(路徑)
#?這邊可以考慮增加變量收縮壓與舒張壓之差、描述收縮壓、舒張壓與高血壓等級的變量#?看數(shù)據(jù)結(jié)構(gòu)str(ata)
#?考慮增加變量bplevelraw_data?<-?sqldf#?對變量類別進(jìn)行區(qū)分ra_da?<-?mapstr(ra_da?)
數(shù)據(jù)預(yù)處理
查看和處理缺失值
#?這里我們使用mice包進(jìn)行缺失值處理aggr
matplot
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測心臟病
左右滑動(dòng)查看更多
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與其它變量的線性相關(guān)性確定mice的填充策略gcog?=?glm(lcse?~?.)smry(glseg)
填充,排除不重要的變量。至于為什么不選diaBP,主要是后面的相關(guān)性分析中,這兩個(gè)變量會(huì)造成多重共線性。
mice%in%??m=5,??"pmm",?mai?=?50,?sd=2333,?pint=?FALSE)#查看填充結(jié)果smr(mc_od)
#?查看原始數(shù)據(jù)和插補(bǔ)后的數(shù)據(jù)分布情況epot(mi_md)
sipt(mcod,?pch=12)
#?填充數(shù)據(jù)mi_t?<-?complete
fir_aa$loe?<-?miout$guosesum(is.na(flda))
刪除重復(fù)行
#?查看有無重復(fù)行并刪除重復(fù)行sum(duplicated
comd_ata?<-?comdta[!duplicated(),?]
查看離群點(diǎn)
#查看異常值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,刪除異常點(diǎn)#?查看sysBP,?刪除異常點(diǎn)#?查看BMI
totChol: 總膽固醇水平大于240mg/dl已屬于非常高,故刪去水平值為600mg/dl的記錄。sysBP: 去掉收縮壓為295mg/dl的記錄
#?刪除各變量離群點(diǎn)competedata
#?分類型變量列聯(lián)分析ggplot+geom_boxplot
ggplot+geom_boxplot(aes,totChol,fill=TenYerCHD))
cometddata?%>%?fitr?%>%?ggplot
由圖像知,glucose和hearRate變量有不顯著的風(fēng)險(xiǎn)
table1=table
chisq.test
table1
table2=table
chisq.test
table3=table
chisq.test
chisq.test
ggpairs
diaBP和sysBP有多重共線性的問題。?
currentSmoker變量可能不顯著,下面進(jìn)入模型部分。
模型
#?劃分?jǐn)?shù)據(jù)集split?=?sample.splittrain?=?subset
邏輯回歸
#?邏輯回歸模型?-?使用所有變量fultaog?=?glm
summary(fulog)
fldaog?=?glm
summary(fuatLg)
prdts?=?predict
glm_le?<-?table
ACCU
隨機(jī)森林
rfoel?<-?randomForest#?獲得重要性imprace
相關(guān)視頻:Boosting原理與R語言提升回歸樹BRT預(yù)測短鰭鰻分布
**
拓端數(shù)據(jù)部落
,贊6
#?選擇重要的因素rfmdel?<-?randomForest#?誤差plot
#?獲取重要性ggplot?+
???geom_bar
???geom_text
這里有患病風(fēng)險(xiǎn)的誤差不降反升,需要探究其中原因
#?繪制分類圖像pred<-predict
pdou_1<-predict??#輸出概率table?<-?tablesum(diag/sum?#預(yù)測準(zhǔn)確率
plot(margin
SVM支持向量機(jī)
#?先進(jìn)行模型調(diào)優(yōu)tud?<-?tune.svm
summary(tud?)
#?使用turning函數(shù)得到最佳參數(shù)設(shè)置支持向量機(jī)mel.nd?<-?svmcost=tuned$
summary(modted)
#?調(diào)用predict函數(shù)基于剛配置好的SVM模型進(jìn)行類標(biāo)號的預(yù)測:sm.ne.ed?<-?predict
sv.tuedtble?<-?table
sm.ue.tbe
acy.s.vm?<-?sum(diag)/sum
模型診斷
根據(jù)上面三個(gè)模型的結(jié)果,可以看出預(yù)測結(jié)果的類別數(shù)量分布非常不均衡
sum
sum(TeYaHD?==?0)
針對這一現(xiàn)象,需要采取方法平衡數(shù)據(jù)集。
數(shù)據(jù)獲取
在下面公眾號后臺(tái)回復(fù)“心臟病風(fēng)險(xiǎn)數(shù)據(jù)”,可獲取完整數(shù)據(jù)。
本文摘選?《R語言邏輯回歸、隨機(jī)森林、SVM支持向量機(jī)預(yù)測FRAMINGHAM心臟病風(fēng)險(xiǎn)和模型診斷可視化》?,點(diǎn)擊“閱讀原文”獲取全文完整資料。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
高維數(shù)據(jù)懲罰回歸方法:主成分回歸PCR、嶺回歸、lasso、彈性網(wǎng)絡(luò)elastic net分析基因數(shù)據(jù)分類回歸決策樹交互式修剪和更美觀地可視化分析細(xì)胞圖像分割數(shù)據(jù)集
實(shí)現(xiàn)廣義相加模型GAM和普通最小二乘(OLS)回歸
貝葉斯線性回歸和多元線性回歸構(gòu)建工資預(yù)測模型
Python支持向量回歸SVR擬合、預(yù)測回歸數(shù)據(jù)和可視化準(zhǔn)確性檢查實(shí)例
邏輯回歸(對數(shù)幾率回歸,Logistic)分析研究生錄取數(shù)據(jù)實(shí)例
廣義線性模型glm泊松回歸的lasso、彈性網(wǎng)絡(luò)分類預(yù)測學(xué)生考試成績數(shù)據(jù)和交叉驗(yàn)證
非線性回歸nls探索分析河流階段性流量數(shù)據(jù)和評級曲線、流量預(yù)測可視化
特征選擇方法——最佳子集回歸、逐步回歸
線性回歸和時(shí)間序列分析北京房價(jià)影響因素可視化案例
貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析免疫球蛋白、前列腺癌數(shù)據(jù)
用加性多元線性回歸、隨機(jī)森林、彈性網(wǎng)絡(luò)模型預(yù)測鮑魚年齡和可視化
PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機(jī)森林、決策樹、支持向量機(jī)、樸素貝葉斯和KMEANS聚類用戶畫像
PYTHON集成機(jī)器學(xué)習(xí):用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網(wǎng)格搜索超參數(shù)優(yōu)化
R語言集成模型:提升樹boosting、隨機(jī)森林、約束最小二乘法加權(quán)平均模型融合分析時(shí)間序列數(shù)據(jù)
Python對商店數(shù)據(jù)進(jìn)行l(wèi)stm和xgboost銷售量時(shí)間序列建模預(yù)測分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機(jī)森林分析心臟病數(shù)據(jù)并高維可視化
R語言基于樹的方法:決策樹,隨機(jī)森林,Bagging,增強(qiáng)樹
R語言用邏輯回歸、決策樹和隨機(jī)森林對信貸數(shù)據(jù)集進(jìn)行分類預(yù)測
spss modeler用決策樹神經(jīng)網(wǎng)絡(luò)預(yù)測ST的股票
R語言中使用線性模型、回歸決策樹自動(dòng)組合特征因子水平
R語言中自編基尼系數(shù)的CART回歸決策樹的實(shí)現(xiàn)
R語言用rle,svm和rpart決策樹進(jìn)行時(shí)間序列預(yù)測
python在Scikit-learn中用決策樹和隨機(jī)森林預(yù)測NBA獲勝者
python中使用scikit-learn和pandas決策樹進(jìn)行iris鳶尾花數(shù)據(jù)分類建模和交叉驗(yàn)證
R語言里的非線性模型:多項(xiàng)式回歸、局部樣條、平滑樣條、 廣義相加模型GAM分析
R語言用標(biāo)準(zhǔn)最小二乘OLS,廣義相加模型GAM?,樣條函數(shù)進(jìn)行邏輯回歸LOGISTIC分類
R語言ISLR工資數(shù)據(jù)進(jìn)行多項(xiàng)式回歸和樣條回歸分析
R語言中的多項(xiàng)式回歸、局部回歸、核平滑和平滑樣條回歸模型
R語言用泊松Poisson回歸、GAM樣條曲線模型預(yù)測騎自行車者的數(shù)量
R語言分位數(shù)回歸、GAM樣條曲線、指數(shù)平滑和SARIMA對電力負(fù)荷時(shí)間序列預(yù)測R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進(jìn)行回歸、分類和動(dòng)態(tài)可視化
如何用R語言在機(jī)器學(xué)習(xí)中建立集成模型?
R語言ARMA-EGARCH模型、集成預(yù)測算法對SPX實(shí)際波動(dòng)率進(jìn)行預(yù)測在python 深度學(xué)習(xí)Keras中計(jì)算神經(jīng)網(wǎng)絡(luò)集成模型R語言ARIMA集成模型預(yù)測時(shí)間序列分析R語言基于Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言基于樹的方法:決策樹,隨機(jī)森林,Bagging,增強(qiáng)樹
R語言基于Bootstrap的線性回歸預(yù)測置信區(qū)間估計(jì)方法
R語言使用bootstrap和增量法計(jì)算廣義線性模型(GLM)預(yù)測置信區(qū)間
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進(jìn)行回歸、分類和動(dòng)態(tài)可視化
Python對商店數(shù)據(jù)進(jìn)行l(wèi)stm和xgboost銷售量時(shí)間序列建模預(yù)測分析
R語言隨機(jī)森林RandomForest、邏輯回歸Logisitc預(yù)測心臟病數(shù)據(jù)和可視化分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機(jī)森林分析心臟病數(shù)據(jù)并高維可視化
Matlab建立SVM,KNN和樸素貝葉斯模型分類繪制ROC曲線
matlab使用分位數(shù)隨機(jī)森林(QRF)回歸樹檢測異常值