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

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

PCA結(jié)合SVM如何實(shí)現(xiàn)分類預(yù)測(cè)分析?看這篇就夠了!

2023-07-08 19:00 作者:爾云間  | 我要投稿


? ? ? ?很多小伙伴最近都問小云,能不能推薦一下不同算法結(jié)合展開的分析?收到!今天小云就特地準(zhǔn)備了一個(gè)PCA結(jié)合SVM的臨床樣本分類預(yù)測(cè)分析案例,通過這個(gè)案例分析希望可以讓小伙伴們有所收獲!

? ? ? ?在之前我們已經(jīng)介紹過PCA算法和SVM算法的理論概念,那么在這里便不再一一介紹,整體分析的目的就是使用PCA對(duì)數(shù)據(jù)進(jìn)行降維,然后利用降維后的數(shù)據(jù)來構(gòu)建并訓(xùn)練SVM模型,最后使得模型具備預(yù)測(cè)臨床分析結(jié)果的功能。

? ? ? ?首先我們介紹一下接下來的分析用到的數(shù)據(jù)集,我們用的是一種疾病患者的臨床數(shù)據(jù),共包含392個(gè)樣本,先來看一下數(shù)據(jù)樣例

這個(gè)數(shù)據(jù)每行對(duì)應(yīng)一個(gè)樣本,包含10個(gè)特征,最后一個(gè)特征group為目標(biāo)特征,也就是樣本的類別,包含control和case兩種。

#收費(fèi)區(qū)域

介紹完數(shù)據(jù),開始期待的代碼部分吧!

代碼部分

#導(dǎo)入相關(guān)R包和數(shù)據(jù)

library(e1071)

library(“pROC”)

library(tidyverse)

library(ggplot2)

data<-read.csv("data.csv")

head(data)

#數(shù)據(jù)預(yù)處理

#由于部分特征為非數(shù)值數(shù)據(jù),所以需要進(jìn)行轉(zhuǎn)換

data$sex[data$sex=="male"]<-1

data$sex[data$sex=="female"]<-0

data$dishistory[data$dishistory=="yes"]<-1

data$dishistory[data$dishistory=="no"]<-0

data$sex=as.numeric(data$sex)

data$dishistory=as.numeric(data$dishistory)

#數(shù)據(jù)標(biāo)準(zhǔn)化

data2=scale(data[,1:9])

#使用prcomp計(jì)算PCA

pca1<-prcomp(data2[,-ncol(data2)],center=TRUE,scale=TRUE)

#輸出PCA結(jié)果

pca1$rotation

#查看PCA特征方差

summary(pca1)

pca2 <- predict(pca1)[,1:2] # 計(jì)算出PCA對(duì)應(yīng)的值

pca2 <- data.frame(pca2) # 轉(zhuǎn)化成data.frame

#添加種類特征

pca2$type=data$group

#PCA關(guān)鍵特征散點(diǎn)圖

pca2%>%

ggplot(aes(x = PC1, y = PC2, color = type)) +

geom_point() +stat_ellipse()

由上圖可以看出PCA降維結(jié)果較好,其中PCA1和PCA2軸可以較好的區(qū)分臨床樣本的兩種種類。于是我們使用這兩個(gè)新特征來訓(xùn)練SVM模型,進(jìn)行進(jìn)一步的分析。

#數(shù)據(jù)集劃分

pca2$type<-factor(pca2$type)

sub<-sample(1:392,260)#260個(gè)樣例作為訓(xùn)練集,其余作為測(cè)試集

train<-pca2[sub,]

test<-pca2[-sub,]

#構(gòu)建SVM模型

svm_model = svm(type~.,data=train,knernel = "radial")

#查看模型信息

summary(svm_model)

#測(cè)試集分類預(yù)測(cè)

svm_pred=predict(svm_model,test,decision.values = TRUE)

test$svm_pred = svm_pred

head(test)

table(test$type,test$svm_pred,dnn=c("真實(shí)值","預(yù)測(cè)值"))

#繪制ROC曲線

ran_roc <- roc(test$type,as.numeric(svm_pred))

plot(ran_roc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),grid.col=c("green", "red"), max.auc.polygon=TRUE,auc.polygon.col="skyblue", print.thres=TRUE,main='SVM模型ROC曲線')

? ? ? 我們把數(shù)據(jù)分成了case和control兩組,其中包含34個(gè)case和98個(gè)control,SVM模型預(yù)測(cè)case分組有5個(gè)錯(cuò)誤,預(yù)測(cè)control分組有1個(gè)錯(cuò)誤,預(yù)測(cè)錯(cuò)誤的樣本非常少,這即說明利用PCA技術(shù)對(duì)數(shù)據(jù)進(jìn)行降維后的特征可以很好地區(qū)分樣本種類,同時(shí)說明降維后的數(shù)據(jù)來訓(xùn)練SVM模型具有很高的預(yù)測(cè)準(zhǔn)確率。于此同時(shí),為了更加直觀展示其預(yù)測(cè)準(zhǔn)確率,我們繪制了ROC曲線圖,如上圖所示,其顯示最后利用SVM來預(yù)測(cè)樣本分類準(zhǔn)確率達(dá)到了92.1%!開放思維來想,這個(gè)方法能不能用來分析我們生信方向存在的一些多特征多分類問題呢?答案當(dāng)然是可以的。怎么樣,簡(jiǎn)單吧!縱觀全文,整個(gè)分析思想非常直觀,但細(xì)節(jié)仍然要注意哦!

? ? ? 分析到這里就結(jié)束啦!小伙伴們是不是感覺眼前一亮?當(dāng)時(shí)小云在完成分析后也是開心了很久,想著可以要是可以給小伙伴們帶來啟發(fā)那真是太好了!大家也不要偷懶哦!快去動(dòng)手自己嘗試一下!

(推薦一下小云新開發(fā)的零代碼云生信分析工具平臺(tái)包含超多零代碼小工具,上傳數(shù)據(jù)一鍵出圖,感興趣的小伙伴歡迎來參觀喲,網(wǎng)址:http://www.biocloudservice.com/home.html)



PCA結(jié)合SVM如何實(shí)現(xiàn)分類預(yù)測(cè)分析?看這篇就夠了!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
金坛市| 厦门市| 宁蒗| 怀来县| 湟源县| 富阳市| 博湖县| 远安县| 扬中市| 乐陵市| 阳西县| 会泽县| 珲春市| 福州市| 炎陵县| 平潭县| 包头市| 崇礼县| 长兴县| 岑溪市| 麦盖提县| 道真| 封开县| 万山特区| 永州市| 鄱阳县| 濮阳县| 平度市| 水富县| 琼结县| 益阳市| 临武县| 图木舒克市| 夏河县| 广州市| 长子县| 文山县| 固始县| 和田县| 双峰县| 鹤岗市|