2025 - 生信信息学 - GEO数据分析 - RF分析(随机森林)

GEO数据分析 - RF分析(随机森林)


01 准备数据文件

r 复制代码
#install.packages("randomForest")


#引用包
library(randomForest)
set.seed(123456)

inputFile="diffGeneExp.txt"       #输入文件
setwd("/Users/wangyang/Desktop/BCBM/02randomForest-ANN")      #设置工作目录

#读取输入文件
data=read.table(inputFile, header=T, sep="\t", check.names=F, row.names=1)
data=t(data)
group=gsub("(.*)\\_(.*)", "\\2", row.names(data))

#随机森林树
rf=randomForest(as.factor(group)~., data=data, ntree=500)
pdf(file="forest.pdf", width=6, height=6)
plot(rf, main="Random forest", lwd=2)
dev.off()

#找出误差最小的点
optionTrees=which.min(rf$err.rate[,1])
optionTrees
rf2=randomForest(as.factor(group)~., data=data, ntree=optionTrees)

#查看基因的重要性
importance=importance(x=rf2)

#绘制基因的重要性图
pdf(file="geneImportance.pdf", width=6.2, height=7.8)
varImpPlot(rf2, main="")
dev.off()

#挑选疾病特征基因
rfGenes=importance[order(importance[,"MeanDecreaseGini"], decreasing = TRUE),]
rfGenes=names(rfGenes[rfGenes>1])     #挑选重要性评分大于1的基因
#rfGenes=names(rfGenes[1:30])         #挑选重要性评分最高的30个基因
write.table(rfGenes, file="rfGenes.txt", sep="\t", quote=F, col.names=F, row.names=F)

#输出重要基因的表达量
sigExp=t(data[,rfGenes])
sigExpOut=rbind(ID=colnames(sigExp),sigExp)
write.table(sigExpOut, file="rfGeneExp.txt", sep="\t", quote=F, col.names=F)
相关推荐
OneBlock Community2 分钟前
重磅!SEC & CFTC 联手“定义加密”,Polkadot 被写进规则!
大数据·人工智能
lazy熊3 分钟前
初学者如何快速入门学会 Claude Code?
人工智能·gpt·ai编程
ForDreamMusk4 分钟前
卷积层
人工智能·深度学习
流年似水~4 分钟前
Copilot已死,Agent当立:2026年,程序员从“码字工“到“AI指挥官“的生存指南
人工智能·程序人生·语言模型·ai编程
珂朵莉MM5 分钟前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第二赛季优化题--遗传算法
人工智能·算法
Peter·Pan爱编程20 分钟前
第五篇:Windsurf(Codeium)解析 —— Cascade 与 “Flow” 状态的工作流对比
人工智能·ai编程
沪漂阿龙21 分钟前
大模型微调终极指南:从显存优化到高效推理,一文吃透所有核心技术
人工智能·面试
李威1430 分钟前
AI替代程序员真的来了!但有办法,别慌
人工智能
DreamWear30 分钟前
Prompt Master:一个帮你写 Prompt 的 Claude Skill
人工智能
WJJAGI31 分钟前
hermes+pentagi进行渗透测试
人工智能·面试