最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)據(jù)分享|R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測(cè)心臟病|附代碼

2022-11-15 17:14 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=23061

這個(gè)數(shù)據(jù)集可以追溯到1988年,由四個(gè)數(shù)據(jù)庫組成??死蛱m、匈牙利、瑞士和長(zhǎng)灘。"目標(biāo) "字段是指病人是否有心臟病。它的數(shù)值為整數(shù),0=無病,1=有病 。

數(shù)據(jù)集信息:

目標(biāo):

主要目的是預(yù)測(cè)給定的人是否有心臟病,借助于幾個(gè)因素,如年齡、膽固醇水平、胸痛類型等。

我們?cè)谶@個(gè)問題上使用的算法是:

  • 二元邏輯回歸

  • Naive Bayes算法

  • 決策樹

  • 隨機(jī)森林

數(shù)據(jù)集的描述:

該數(shù)據(jù)有303個(gè)觀察值和14個(gè)變量。每個(gè)觀察值都包含關(guān)于個(gè)人的以下信息。

  • 年齡:- 個(gè)人的年齡,以年為單位

  • sex:- 性別(1=男性;0=女性)

  • cp - 胸痛類型(1=典型心絞痛;2=非典型心絞痛;3=非心絞痛;4=無癥狀)。

  • 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ù)

heart<-read.csv("heart.csv",header?=?T)

header = T意味著給定的數(shù)據(jù)有自己的標(biāo)題,或者換句話說,第一個(gè)觀測(cè)值也被考慮用于預(yù)測(cè)。

head(heart)

當(dāng)我們想查看和檢查數(shù)據(jù)的前六個(gè)觀察點(diǎn)時(shí),我們使用head函數(shù)。

tail(heart)

顯示的是我們數(shù)據(jù)中最后面的六個(gè)觀察點(diǎn)

colSums(is.na(heart))

這個(gè)函數(shù)是用來檢查我們的數(shù)據(jù)是否包含任何NA值。
如果沒有發(fā)現(xiàn)NA,我們就可以繼續(xù)前進(jìn),否則我們就必須在之前刪除NA。

檢查我們的數(shù)據(jù)結(jié)構(gòu)

str(heart)

查看我們的數(shù)據(jù)摘要

summary(heart)

通過觀察以上的總結(jié),我們可以說以下幾點(diǎn)

  • 性別不是連續(xù)變量,因?yàn)楦鶕?jù)我們的描述,它可以是男性或女性。因此,我們必須將性別這個(gè)變量名稱從整數(shù)轉(zhuǎn)換為因子。

  • cp不能成為連續(xù)變量,因?yàn)樗切赝吹念愋?。由于它是胸痛的類型,我們必須將變量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ì)變量做了一些變化

#例如 sex<-as.factor(sex)levels(sex)<-c("Female","Male")

檢查上述變化是否執(zhí)行成功

str(heart)

summary(heart)

EDA

EDA是探索性數(shù)據(jù)分析(Exploratory Data Analysis)的縮寫,它是一種數(shù)據(jù)分析的方法/哲學(xué),采用各種技術(shù)(主要是圖形技術(shù))來深入了解數(shù)據(jù)集。

對(duì)于圖形表示,我們需要庫 "ggplot2"

library(ggplot2)ggplot(heart,aes(x=age,fill=target,color=target))?+?geom_histogram(binwidth?=?1,color="black")?+?labs(x?=?"Age",y?=?"Frequency",?title?=?"Heart?Disease?w.r.t.?Age")

我們可以得出結(jié)論,與60歲以上的人相比,40至60歲的人患心臟病的概率最高。

table?<-?table(cp) pie(table)

我們可以得出結(jié)論,在所有類型的胸痛中,在個(gè)人身上觀察到的大多數(shù)是典型的胸痛類型,然后是非心絞痛。

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

R語言用邏輯回歸、決策樹和隨機(jī)森林對(duì)信貸數(shù)據(jù)集進(jìn)行分類預(yù)測(cè)

左右滑動(dòng)查看更多

01

02

03

04

執(zhí)行機(jī)器學(xué)習(xí)算法

Logistic回歸

首先,我們將數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)(75%)和測(cè)試數(shù)據(jù)(25%)。

set.seed(100)?#100用于控制抽樣的permutation為100.? index<-sample(nrow(heart),0.75*nrow(heart))

在訓(xùn)練數(shù)據(jù)上生成模型,然后用測(cè)試數(shù)據(jù)驗(yàn)證模型。

glm(family?=?"binomial")#?family?=?"?二項(xiàng)式?"意味著只包含兩個(gè)結(jié)果。

為了檢查我們的模型是如何生成的,我們需要計(jì)算預(yù)測(cè)分?jǐn)?shù)和建立混淆矩陣來了解模型的準(zhǔn)確性。

pred<-fitted(blr) #?擬合只能用于獲得生成模型的數(shù)據(jù)的預(yù)測(cè)分?jǐn)?shù)。

我們可以看到,預(yù)測(cè)的分?jǐn)?shù)是患心臟病的概率。但我們必須找到一個(gè)適當(dāng)?shù)姆纸琰c(diǎn),從這個(gè)分界點(diǎn)可以很容易地區(qū)分是否患有心臟病。

為此,我們需要ROC曲線,這是一個(gè)顯示分類模型在所有分類閾值下的性能的圖形。它將使我們能夠采取適當(dāng)?shù)呐R界值。

pred<-prediction(train$pred,train$target) perf<-performance(pred,"tpr","fpr") plot(perf,colorize?=?T,print.cutoffs.at?=?seq(0.1,by?=?0.1))

通過使用ROC曲線,我們可以觀察到0.6具有更好的敏感性和特異性,因此我們選擇0.6作為區(qū)分的分界點(diǎn)。

pred1<-ifelse(pred<0.6,"No","Yes")

#?訓(xùn)練數(shù)據(jù)的準(zhǔn)確性acc_tr

從訓(xùn)練數(shù)據(jù)的混淆矩陣中,我們知道模型有88.55%的準(zhǔn)確性。

現(xiàn)在在測(cè)試數(shù)據(jù)上驗(yàn)證該模型

predict(type?=?"response")##?type?=?"response?"是用來獲得患有心臟病的概率的結(jié)果。head(test)

我們知道,對(duì)于訓(xùn)練數(shù)據(jù)來說,臨界點(diǎn)是0.6。同樣地,測(cè)試數(shù)據(jù)也會(huì)有相同的臨界點(diǎn)。

confusionMatrix((pred1),target)

#測(cè)試數(shù)據(jù)的準(zhǔn)確性.

檢查我們的預(yù)測(cè)值有多少位于曲線內(nèi)

auc@y.values

我們可以得出結(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è)列。

#naivebayes模型nB(target~.)

用訓(xùn)練數(shù)據(jù)檢查模型,并創(chuàng)建其混淆矩陣,來了解模型的準(zhǔn)確程度。

predict(train)confMat(pred,target)

我們可以說,貝葉斯算法對(duì)訓(xùn)練數(shù)據(jù)的準(zhǔn)確率為85.46%。

現(xiàn)在,通過預(yù)測(cè)和創(chuàng)建混淆矩陣來驗(yàn)證測(cè)試數(shù)據(jù)的模型。

Matrix(pred,target)

我們可以得出結(jié)論,在Naive Bayes算法的幫助下生成的模型準(zhǔn)確率為78.95%,或者我們也可以說Naive Bayes算法的錯(cuò)誤分類率為21.05%。

決策樹

在實(shí)施決策樹之前,我們需要?jiǎng)h除我們?cè)趫?zhí)行Naive Bayes算法時(shí)添加的額外列。

train$pred<-NULL

rpart代表遞歸分區(qū)和回歸樹

當(dāng)自變量和因變量都是連續(xù)的或分類的時(shí)候,就會(huì)用到rpart。

rpart會(huì)自動(dòng)檢測(cè)是否要根據(jù)因變量進(jìn)行回歸或分類。

實(shí)施決策樹

plot(tree)

在決策樹的幫助下,我們可以說所有變量中最重要的是CP、CA、THAL、Oldpeak。

讓我們用測(cè)試數(shù)據(jù)來驗(yàn)證這個(gè)模型,并找出模型的準(zhǔn)確性。

conMat(pred,targ)

我們可以說,決策樹的準(zhǔn)確率為76.32%,或者說它的錯(cuò)誤分類率為23.68%。

隨機(jī)森林

在執(zhí)行隨機(jī)森林之前,我們需要?jiǎng)h除我們?cè)趫?zhí)行決策樹時(shí)添加的額外預(yù)測(cè)列。

test$pred<-NULL

在隨機(jī)森林中,我們不需要將數(shù)據(jù)分成訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù),我們直接在整個(gè)數(shù)據(jù)上生成模型。為了生成模型,我們需要使用隨機(jī)森林庫

#?Set.seed通過限制permutation來控制隨機(jī)性。set.seed(100) model_rf<-randomForest(target~.,data?=?heart) model_rf

在圖上繪制出隨機(jī)森林與誤差的關(guān)系。

plot(model_rf)

紅線代表沒有心臟病的MCR,綠線代表有心臟病的MCR,黑線代表總體MCR或OOB誤差??傮w誤差率是我們感興趣的,結(jié)果不錯(cuò)。

結(jié)論

在進(jìn)行了各種分類技術(shù)并考慮到它們的準(zhǔn)確性后,我們可以得出結(jié)論,所有模型的準(zhǔn)確性都在76%到84%之間。其中,隨機(jī)森林的準(zhǔn)確率略高,為83.5%。

數(shù)據(jù)獲取

在下面公眾號(hào)后臺(tái)回復(fù)“心臟病數(shù)****據(jù)”,可免費(fèi)獲取完整數(shù)據(jù)。

本文摘選?《?R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測(cè)心臟病?》?,點(diǎn)擊“閱讀原文”獲取全文完整資料。

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

R語言邏輯回歸logistic模型分析泰坦尼克titanic數(shù)據(jù)集預(yù)測(cè)生還情況R語言是否對(duì)二分連續(xù)變量執(zhí)行邏輯回歸
R語言用lme4多層次(混合效應(yīng))廣義線性模型(GLM),邏輯回歸分析教育留級(jí)調(diào)查數(shù)據(jù)
R語言隨機(jī)森林RandomForest、邏輯回歸Logisitc預(yù)測(cè)心臟病數(shù)據(jù)和可視化分析
R語言基于Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言邏輯回歸(Logistic回歸)模型分類預(yù)測(cè)病人冠心病風(fēng)險(xiǎn)
R語言用局部加權(quán)回歸(Lowess)對(duì)logistic邏輯回歸診斷和殘差分析R語言用主成分PCA、?邏輯回歸、決策樹、隨機(jī)森林分析心臟病數(shù)據(jù)并高維可視化
R語言用線性模型進(jìn)行臭氧預(yù)測(cè):加權(quán)泊松回歸,普通最小二乘,加權(quán)負(fù)二項(xiàng)式模型,多重插補(bǔ)缺失值R語言Bootstrap的嶺回歸和自適應(yīng)LASSO回歸可視化
R語言中回歸和分類模型選擇的性能指標(biāo)
R語言多元時(shí)間序列滾動(dòng)預(yù)測(cè):ARIMA、回歸、ARIMAX模型分析
R語言用lme4多層次(混合效應(yīng))廣義線性模型(GLM),邏輯回歸分析教育留級(jí)調(diào)查數(shù)據(jù)
R語言計(jì)量經(jīng)濟(jì)學(xué):虛擬變量(啞變量)在線性回歸模型中的應(yīng)用
R語言 線性混合效應(yīng)模型實(shí)戰(zhàn)案例
R語言混合效應(yīng)邏輯回歸(mixed effects logistic)模型分析肺癌數(shù)據(jù)
R語言如何用潛類別混合效應(yīng)模型(LCMM)分析抑郁癥狀
R語言基于copula的貝葉斯分層混合模型的診斷準(zhǔn)確性研究
R語言建立和可視化混合效應(yīng)模型mixed effect model
R語言LME4混合效應(yīng)模型研究教師的受歡迎程度
R語言 線性混合效應(yīng)模型實(shí)戰(zhàn)案例
R語言用Rshiny探索lme4廣義線性混合模型(GLMM)和線性混合模型(LMM)
R語言基于copula的貝葉斯分層混合模型的診斷準(zhǔn)確性研究
R語言如何解決線性混合模型中畸形擬合(Singular fit)的問題
基于R語言的lmer混合線性回歸模型
R語言用WinBUGS 軟件對(duì)學(xué)術(shù)能力測(cè)驗(yàn)建立層次(分層)貝葉斯模型
R語言分層線性模型案例
R語言用WinBUGS 軟件對(duì)學(xué)術(shù)能力測(cè)驗(yàn)(SAT)建立分層模型
使用SAS,Stata,HLM,R,SPSS和Mplus的分層線性模型HLM
R語言用WinBUGS 軟件對(duì)學(xué)術(shù)能力測(cè)驗(yàn)建立層次(分層)貝葉斯模型
SPSS中的多層(等級(jí))線性模型Multilevel linear models研究整容手術(shù)數(shù)據(jù)
用SPSS估計(jì)HLM多層(層次)線性模型模型


數(shù)據(jù)分享|R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測(cè)心臟病|附代碼的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
山阳县| 固原市| 子洲县| 峨山| 右玉县| 精河县| 常宁市| 开江县| 会泽县| 古田县| 林州市| 肥城市| 英吉沙县| 阿拉善右旗| 扎兰屯市| 英吉沙县| 荔波县| 高密市| 洛扎县| 沛县| 文昌市| 库伦旗| 云安县| 阳泉市| 济南市| 汾阳市| 连云港市| 木兰县| 沙田区| 湄潭县| 皋兰县| 宁城县| 甘谷县| 高台县| 全州县| 长岛县| 政和县| 永济市| 西吉县| 呼图壁县| 安康市|