TCGA-12.支持向量機(jī)生存模型

花花花寫于2020-02-07 閉門不出的第n天,我們將原定于下周一的學(xué)習(xí)小組提前到今天開始了,我也收到公司通知,我們可能五一之前都沒辦法出去做線下培訓(xùn),要轉(zhuǎn)型線上培訓(xùn)了,如果不是這場災(zāi)難,此刻我應(yīng)該是在廣州的酒店,準(zhǔn)備明天的課程了。

1.準(zhǔn)備輸入數(shù)據(jù)

輸入數(shù)據(jù)是TCGA的表達(dá)矩陣expr、臨床信息meta和group_list。保存為forest.Rdata了,在生信星球公眾號后臺聊天窗口回復(fù)“森林”即可獲得。

load("forest.Rdata")
exprSet = expr[,group_list=="tumor"]

## 必須保證生存資料和表達(dá)矩陣,兩者一致
all(substring(colnames(exprSet),1,12)==meta$ID)
#> [1] TRUE
library(ROCR)
library(genefilter)
library(Hmisc)
library(e1071)

2.構(gòu)建支持向量機(jī)模型

2.1.切割數(shù)據(jù)

用R包c(diǎn)aret切割數(shù)據(jù),生成的結(jié)果是一組代表列數(shù)的數(shù)字,用這些數(shù)字來給表達(dá)矩陣和meta取子集即可。

#library(caret)
#set.seed(12345679)
#sam<- createDataPartition(meta$event, p = .5,list = FALSE)
load("sam.Rdata")

train <- exprSet[,sam]
test <- exprSet[,-sam]
train_meta <- meta[sam,]
test_meta <- meta[-sam,]

2.2 train數(shù)據(jù)集建模

x=t(log2(train+1))
y=as.factor(train_meta$event)
model = svm(x,y,kernel = "linear")
summary(model) 
#> 
#> Call:
#> svm.default(x = x, y = y, kernel = "linear")
#> 
#> 
#> Parameters:
#>    SVM-Type:  C-classification 
#>  SVM-Kernel:  linear 
#>        cost:  1 
#> 
#> Number of Support Vectors:  179
#> 
#>  ( 108 71 )
#> 
#> 
#> Number of Classes:  2 
#> 
#> Levels: 
#>  0 1

2.3.模型預(yù)測

用訓(xùn)練集構(gòu)建模型,預(yù)測測試集的生死。不同于其他模型,這個預(yù)測結(jié)果是分類變量,直接預(yù)測生死(0,1),而不是prob(百分?jǐn)?shù))。

x=t(log2(test+1))
y=as.factor(test_meta$event)
pred = predict(model, x)
table(pred,y)
#>     y
#> pred   0   1
#>    0 151  42
#>    1  36  32

目前留有一個疑問,端詳了一下模型內(nèi)部結(jié)構(gòu),還不知道如何找到構(gòu)建模型用到的基因。由于公眾號文章一經(jīng)發(fā)出無法修改,此問題后期如需更新,我將在簡書(原文鏈接跳轉(zhuǎn))更新。

微信公眾號生信星球同步更新我的文章,歡迎大家掃碼關(guān)注!


我們有為生信初學(xué)者準(zhǔn)備的學(xué)習(xí)小組,點(diǎn)擊查看??
想要參加我的線上線下課程,也可加好友咨詢??
如果需要提問,請先看生信星球答疑公告

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容