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)
相关推荐
rain_sxr2 分钟前
视口之外不渲染:IntersectionObserver 懒加载与组件卸载回收
人工智能
wp123_13 分钟前
智能座舱与AI终端模式切换:精密滑动开关选型与验证
人工智能
数智工坊10 分钟前
RehearseVLA深度解析:基于物理一致世界模型的VLA强化学习后训练框架
人工智能·深度学习·3d·机器人
林小卫很行11 分钟前
WorkBuddy 入门:为什么推荐腾讯出的这个 AI 助手
人工智能·程序员
our_times15 分钟前
豆包与抖音联动效果展示大纲
人工智能
刘一说16 分钟前
AI科技热点日报 | 2026年07月21日
人工智能·科技
阿黎梨梨17 分钟前
大模型是怎么“随机说话”的?手把手带你控制它的“嘴”
人工智能
苏醒的人生21 分钟前
AI 视频工具最强迭代!Seedance 2.5在哪里下载使用?即梦AI即将全球首发
人工智能
AI大模型-小雄22 分钟前
Codex 测试总跑不完怎么办?补 Credits 还是升级 Pro
人工智能·chatgpt·提示词·codex·ai办公·chatgpt pro·credits
xiaofan67201323 分钟前
数字经济本科毕业能做数据分析吗?当然可以,但要这样规划才更稳!
数据挖掘·数据分析