TCGA学习01:数据下载与整理 - 简书
TCGA学习02:差异分析 - 简书
TCGA学习03:生存分析 - 简书
TCGA学习04:建模预测-cox回归 - 简书
TCGA学习04:建模预测-lasso回归 - 简书
TCGA学习04:建模预测-随机森林&向量机 - 简书
关于随机森林与向量机之前,学习R时,有过一定了了解,详见R语言入门--第十五节(预测二分类) ,是两种复杂但建模质量较高的两种方法。
法3:随机森林
- (1)训练集建模
rm(list=ls())
load("tosur.RData")
exprSet=exp_tumor
library(randomForest)
library(ROCR)
library(genefilter)
library(Hmisc)
library(caret)
set.seed(12345679)
sam<- createDataPartition(meta$event, p = .5,list = FALSE)
train <- exprSet[,sam]
test <- exprSet[,-sam]
train_meta <- meta[sam,]
test_meta <- meta[-sam,]
x = t(log2(train+1))
y = train_meta$event
rf_output=randomForest(x=x, y=y,importance = TRUE, ntree = 10001, proximity=TRUE )
- 由于设置ntree = 10001,比较耗时,十多分钟,默认值应该为500。
- 同时计算结束后,返回如下warning,后面的流程觉得没显示异常,暂且记录下。
choose_gene=rownames(tail(rf_importances[order(rf_importances[,2]),],30))
length(choose_gene)
- (2)验证集验证模型
x = t(log2(test+1))
y = test_meta$event
rf.prob <- predict(rf_output, x)
#同样预测的是生存概率
re=cbind(y ,rf.prob)
re=as.data.frame(re)
colnames(re)=c('event','prob')
re$event=as.factor(re$event)
#先看看箱线图
library(ggpubr)
p1 = ggboxplot(re, x = "event", y = "prob",
color = "event", palette = "jco",
add = "jitter")+ stat_compare_means()
p1
箱线图,区分度好差...
# 再简单看下AUC值
library(ROCR)
pred <- prediction(re[,2], re[,1])
auc= performance(pred,"auc")@y.values[[1]]
auc
# [1] 0.5694418
果然数据质量低,用什么方法都没救....
法4:向量机
- 注意:向量机的预测结果直接是事件,即0/1,而不是概率。
(1)训练集建模
rm(list=ls())
load("tosur.RData")
exprSet=exp_tumor
library(ROCR)
library(genefilter)
library(Hmisc)
library(e1071)
library(caret)
set.seed(12345)
sam<- createDataPartition(meta$event, p = .5,list = FALSE)
train <- exprSet[,sam]
test <- exprSet[,-sam]
train_meta <- meta[sam,]
test_meta <- meta[-sam,]
x=t(log2(train+1))
y=as.factor(train_meta$event)
model = svm(x,y,kernel = "linear")
summary(model)
summary(model)
- 预测验证集
x=t(log2(test+1))
y=as.factor(test_meta$event)
pred = predict(model, x)
table(pred,y)
如下图结果:
- 173个实际为0,即生的患者,模型预测对111个;
- 87个实际为1,即死的患者,模型只预测对38个。
TCGA系列学习笔记暂时就这样吧~ 重在流程的了解,以及R操作。之后对于相关知识点(癌症、统计学知识)等等值得暑假进一步学习。
网友评论