拓端tecdat|R語(yǔ)言邏輯回歸、Naive Bayes貝葉斯、決策樹(shù)、隨機(jī)森林算法預(yù)測(cè)心臟病
原文鏈接:http://tecdat.cn/?p=23061
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
數(shù)據(jù)集信息:
這個(gè)數(shù)據(jù)集可以追溯到1988年,由四個(gè)數(shù)據(jù)庫(kù)組成??死蛱m、匈牙利、瑞士和長(zhǎng)灘。"目標(biāo) "字段是指病人是否有心臟病。它的數(shù)值為整數(shù),0=無(wú)病,1=有病。
目標(biāo):
主要目的是預(yù)測(cè)給定的人是否有心臟病,借助于幾個(gè)因素,如年齡、膽固醇水平、胸痛類型等。
我們?cè)谶@個(gè)問(wèn)題上使用的算法是:
二元邏輯回歸
naive Bayes算法
決策樹(shù)
隨機(jī)森林
數(shù)據(jù)集的描述:
該數(shù)據(jù)有303個(gè)觀察值和14個(gè)變量。每個(gè)觀察值都包含關(guān)于個(gè)人的以下信息。
年齡:- 個(gè)人的年齡,以年為單位
sex:- 性別(1=男性;0=女性)
cp - 胸痛類型(1=典型心絞痛;2=非典型心絞痛;3=非心絞痛;4=無(wú)癥狀)。
trestbps--靜息血壓
chol - 血清膽固醇,單位:mg/dl
fbs - 空腹血糖水平>120 mg/dl(1=真;0=假)
restecg - 靜息心電圖結(jié)果(0=正常;1=有ST-T;2=肥大)
thalach - 達(dá)到的最大心率
exang - 運(yùn)動(dòng)誘發(fā)的心絞痛(1=是;0=否)
oldpeak - 相對(duì)于靜止?fàn)顟B(tài),運(yùn)動(dòng)誘發(fā)的ST壓低
slope - 運(yùn)動(dòng)時(shí)ST段峰值的斜率(1=上斜;2=平坦;3=下斜)
ca - 主要血管的數(shù)量(0-4),由Flourosopy著色
地中海貧血癥--地中海貧血癥是一種遺傳性血液疾病,會(huì)影響身體產(chǎn)生血紅蛋白和紅細(xì)胞的能力。1=正常;2=固定缺陷;3=可逆轉(zhuǎn)缺陷
目標(biāo)--預(yù)測(cè)屬性--心臟疾病的診斷(血管造影疾病狀態(tài))(值0=<50%直徑狹窄;值1=>50%直徑狹窄)
在Rstudio中加載數(shù)據(jù)
header = T意味著給定的數(shù)據(jù)有自己的標(biāo)題,或者換句話說(shuō),第一個(gè)觀測(cè)值也被考慮用于預(yù)測(cè)。?
當(dāng)我們想查看和檢查數(shù)據(jù)的前六個(gè)觀察點(diǎn)時(shí),我們使用head函數(shù)。?
?顯示的是我們數(shù)據(jù)中最后面的六個(gè)觀察點(diǎn)
這個(gè)函數(shù)是用來(lái)檢查我們的數(shù)據(jù)是否包含任何NA值。
如果沒(méi)有發(fā)現(xiàn)NA,我們就可以繼續(xù)前進(jìn),否則我們就必須在之前刪除NA。
檢查我們的數(shù)據(jù)結(jié)構(gòu)
查看我們的數(shù)據(jù)摘要
通過(guò)觀察以上的總結(jié),我們可以說(shuō)以下幾點(diǎn)
性別不是連續(xù)變量,因?yàn)楦鶕?jù)我們的描述,它可以是男性或女性。因此,我們必須將性別這個(gè)變量名稱從整數(shù)轉(zhuǎn)換為因子。
cp不能成為連續(xù)變量,因?yàn)樗切赝吹念愋汀S捎谒切赝吹念愋?,我們必須將變量cp轉(zhuǎn)換為因子。
fbs不能是連續(xù)變量或整數(shù),因?yàn)樗@示血糖水平是否低于120mg/dl。
restecg是因子,因?yàn)樗切碾妶D結(jié)果的類型。它不能是整數(shù)。所以,我們要把它轉(zhuǎn)換為因子和標(biāo)簽。
根據(jù)數(shù)據(jù)集的描述,exang應(yīng)該是因子。心絞痛發(fā)生或不發(fā)生。因此,將該變量轉(zhuǎn)換為因子。
斜率不能是整數(shù),因?yàn)樗窃谛碾妶D中觀察到的斜率類型。因此,我們將變量轉(zhuǎn)換為因子。
根據(jù)數(shù)據(jù)集的描述,ca不是整數(shù)。因此,我們要將該變量轉(zhuǎn)換為因子。
thal不是整數(shù),因?yàn)樗堑刂泻X氀念愋?。因此,我們將變量轉(zhuǎn)換為因子。
目標(biāo)是預(yù)測(cè)變量,告訴我們這個(gè)人是否有心臟病。因此,我們將該變量轉(zhuǎn)換為因子,并為其貼上標(biāo)簽。
根據(jù)上述考慮,我們對(duì)變量做了一些變化
檢查上述變化是否執(zhí)行成功
??
EDA
EDA是探索性數(shù)據(jù)分析(Exploratory Data Analysis)的縮寫(xiě),它是一種數(shù)據(jù)分析的方法/哲學(xué),采用各種技術(shù)(主要是圖形技術(shù))來(lái)深入了解數(shù)據(jù)集。
對(duì)于圖形表示,我們需要庫(kù) "ggplot2"
我們可以得出結(jié)論,與60歲以上的人相比,40至60歲的人患心臟病的概率最高。?
我們可以得出結(jié)論,在所有類型的胸痛中,在個(gè)人身上觀察到的大多數(shù)是典型的胸痛類型,然后是非心絞痛。
執(zhí)行機(jī)器學(xué)習(xí)算法
Logistic回歸
首先,我們將數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)(75%)和測(cè)試數(shù)據(jù)(25%)。
在訓(xùn)練數(shù)據(jù)上生成模型,然后用測(cè)試數(shù)據(jù)驗(yàn)證模型。?
為了檢查我們的模型是如何生成的,我們需要計(jì)算預(yù)測(cè)分?jǐn)?shù)和建立混淆矩陣來(lái)了解模型的準(zhǔn)確性。?
我們可以看到,預(yù)測(cè)的分?jǐn)?shù)是患心臟病的概率。但我們必須找到一個(gè)適當(dāng)?shù)姆纸琰c(diǎn),從這個(gè)分界點(diǎn)可以很容易地區(qū)分是否患有心臟病。
為此,我們需要ROC曲線,這是一個(gè)顯示分類模型在所有分類閾值下的性能的圖形。它將使我們能夠采取適當(dāng)?shù)呐R界值。
通過(guò)使用ROC曲線,我們可以觀察到0.6具有更好的敏感性和特異性,因此我們選擇0.6作為區(qū)分的分界點(diǎn)。
從訓(xùn)練數(shù)據(jù)的混淆矩陣中,我們知道模型有88.55%的準(zhǔn)確性。
現(xiàn)在在測(cè)試數(shù)據(jù)上驗(yàn)證該模型
我們知道,對(duì)于訓(xùn)練數(shù)據(jù)來(lái)說(shuō),臨界點(diǎn)是0.6。同樣地,測(cè)試數(shù)據(jù)也會(huì)有相同的臨界點(diǎn)。
檢查我們的預(yù)測(cè)值有多少位于曲線內(nèi)
我們可以得出結(jié)論,我們的準(zhǔn)確率為81.58%,90.26%的預(yù)測(cè)值位于曲線之下。同時(shí),我們的錯(cuò)誤分類率為18.42%。
naive Bayes算法
在執(zhí)行naive Bayes算法之前,需要?jiǎng)h除我們?cè)趫?zhí)行BLR時(shí)添加的額外預(yù)測(cè)列。
用訓(xùn)練數(shù)據(jù)檢查模型,并創(chuàng)建其混淆矩陣,來(lái)了解模型的準(zhǔn)確程度。
我們可以說(shuō),貝葉斯算法對(duì)訓(xùn)練數(shù)據(jù)的準(zhǔn)確率為85.46%。
現(xiàn)在,通過(guò)預(yù)測(cè)和創(chuàng)建混淆矩陣來(lái)驗(yàn)證測(cè)試數(shù)據(jù)的模型。
?
我們可以得出結(jié)論,在naive Bayes算法的幫助下生成的模型準(zhǔn)確率為78.95%,或者我們也可以說(shuō)naive Bayes算法的錯(cuò)誤分類率為21.05%。
決策樹(shù)
在實(shí)施決策樹(shù)之前,我們需要?jiǎng)h除我們?cè)趫?zhí)行naive Bayes算法時(shí)添加的額外列。
rpart代表遞歸分區(qū)和回歸樹(shù)
當(dāng)自變量和因變量都是連續(xù)的或分類的時(shí)候,就會(huì)用到rpart。
rpart會(huì)自動(dòng)檢測(cè)是否要根據(jù)因變量進(jìn)行回歸或分類。
實(shí)施決策樹(shù)
在決策樹(shù)的幫助下,我們可以說(shuō)所有變量中最重要的是CP、CA、THAL、Oldpeak。
讓我們用測(cè)試數(shù)據(jù)來(lái)驗(yàn)證這個(gè)模型,并找出模型的準(zhǔn)確性。
我們可以說(shuō),決策樹(shù)的準(zhǔn)確率為76.32%,或者說(shuō)它的錯(cuò)誤分類率為23.68%。
隨機(jī)森林
在執(zhí)行隨機(jī)森林之前,我們需要?jiǎng)h除我們?cè)趫?zhí)行決策樹(shù)時(shí)添加的額外預(yù)測(cè)列。
在隨機(jī)森林中,我們不需要將數(shù)據(jù)分成訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù),我們直接在整個(gè)數(shù)據(jù)上生成模型。為了生成模型,我們需要使用隨機(jī)森林庫(kù)
在圖上繪制出隨機(jī)森林與誤差的關(guān)系。
紅線代表沒(méi)有心臟病的MCR,綠線代表有心臟病的MCR,黑線代表總體MCR或OOB誤差。總體誤差率是我們感興趣的,結(jié)果不錯(cuò)。
結(jié)論
在進(jìn)行了各種分類技術(shù)并考慮到它們的準(zhǔn)確性后,我們可以得出結(jié)論,所有模型的準(zhǔn)確性都在76%到84%之間。其中,隨機(jī)森林的準(zhǔn)確率略高,為83.5%。
最受歡迎的見(jiàn)解
1.R語(yǔ)言多元Logistic邏輯回歸 應(yīng)用案例
2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實(shí)現(xiàn)
3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)
4.R語(yǔ)言泊松Poisson回歸模型分析案例
5.R語(yǔ)言回歸中的Hosmer-Lemeshow擬合優(yōu)度檢驗(yàn)
6.r語(yǔ)言中對(duì)LASSO回歸,Ridge嶺回歸和Elastic Net模型實(shí)現(xiàn)
7.在R語(yǔ)言中實(shí)現(xiàn)Logistic邏輯回歸
8.python用線性回歸預(yù)測(cè)股票價(jià)格
9.R語(yǔ)言如何在生存分析與Cox回歸中計(jì)算IDI,NRI指標(biāo)