当前位置: 首页 > news >正文

(完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子

前言

自用生信代码, 花费一个多月写下来的。自学R以来第一次写600多行的代码。我的文章已经发表,如对您的研究有帮助希望可以引用一下。文章点我

SVM-RFE

主要是借助e1071包, 实现mSVM-REF识别并筛选关键基因,没有安装的小伙伴需要安装一下。

install.packages("e1071")

mSVM-REF函数是John Colby教授写的链接点我。如无法上GitHub,我也上传在我的gitee仓库里,可以点击右边的1直达1。

输入文件整理成这种样子,即行为样本,列为基因,第一列是分组信息(我只做了两组比较,多组对比需要再研究)。
input格式
函数是已经写好的,我们直接引用即可。

set.seed(2023)
library(e1071)#这里填写你存放的文件路径
source("D:\\ProgramFiles\\R\\Work\\msvmRFE.R")nfold = 10 #10倍交叉验证
nrows = nrow(input)
folds = rep(1:nfold, len=nrows)[sample(nrows)]
folds = lapply(1:nfold, function(x) which(folds == x))results = lapply(folds, svmRFE.wrap, input, k=10, halve.above=100)
top.features = WriteFeatures(results, input, save=F)
featsweep = lapply(1:5, FeatSweep.wrap, results, input)no.info = min(prop.table(table(input[,1])))
errors = sapply(featsweep, function(x) ifelse(is.null(x), NA, x$error))pdf("svm_rfe.pdf", height = 8, width = 10)
PlotErrors(errors, no.info=no.info)
dev.off()
plot(top.features)#这个图也可以保存

另外我还参考了的Maryam教授的并行代码链接点我,并行计算,提高计算速度。前提是要在win10系统中需要安装Rmpi。 印象中我折腾了一下才装上,如果没安装成功,就不要尝试了,用上面的代码让它慢慢跑也是可以出结果的。

set.seed(2023)library(e1071)
library(Rmpi)
library(snow)
library(parallel)#这里填写你存放的文件路径
source("D:\\ProgramFiles\\R\\Work\\msvmRFE.R")nfold = 10 #10倍交叉验证
nrows = nrow(input)
folds = rep(1:nfold, len=nrows)[sample(nrows)]
folds = lapply(1:nfold, function(x) which(folds == x))#make a cluster
cl <- makeMPIcluster(mpi.universe.size())clusterExport(cl, list("input","svmRFE","getWeights","svm"))
results <-parLapply(cl,folds, svmRFE.wrap, input, k=10, halve.above=100)
top.features = WriteFeatures(results, input, save=F)clusterExport(cl, list("top.features","results", "tune","tune.control"))
featsweep = parLapply(cl,1:100, FeatSweep.wrap, results, input)
stopCluster(cl)no.info = min(prop.table(table(input[,1])))
errors = sapply(featsweep, function(x) ifelse(is.null(x), NA, x$error))pdf("svm_rfe.pdf", height = 8, width = 10)
PlotErrors(errors, no.info=no.info)
dev.off()
plot(top.features)
mpi.exit()

其他内容

我文章中所用的其他代码,包括下载数据、差异分析、lasso回归、随机森林等网上的攻略已经很多了,就不再重复,只是把我实际使用的贴出来给大家做参考,可以点旁边这个1访问。1

  • GEOquery包下载GEO中的数据。(有时候下不下来还是需要自己手动下载读取)
  • limma包对芯片数据进行差异分析。
  • DESeq2包对测序数据进行差异分析。
  • MEGENA包构建共表达图谱。
  • glmnet包实现lasso回归筛选
  • randomForest包实现随机森林筛选。
  • venn包绘制韦恩图。
  • pROC包检验预测效果。
  • CIBERSORT进行免疫浸润分析(函数代码点我)。
  • 用ggplot2,余叔的aplot等包进行了一些可视化。

代码写的有点乱,具体讲解先鸽了,有时间再来整理。
如果看不懂的可以在下面评论和私信我。

最后想说

其实这些代码都是别人写好的,我只是搬运过来。就好比人家花了好多时间养好的鱼被我买过来,再卖给大家,我是个香香的卖鱼的。

我不生产代码,只是代码的搬运工。

相关文章:

  • WPF入门到跪下 第八章 动画-VisualStateManager
  • vuetify 回到顶部
  • 2024.1.9 Spark SQL day06 homework
  • react 6种方式编写样式
  • Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!
  • 【MIT 6.S081】2020, 实验记录(1),Lab: Xv6 and Unix utilities
  • uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端鉴权拦截器实现
  • CentOS 7.8 安装 Docker
  • Python 架构模式:第五章到第九章
  • 代码随想录day24 开启回溯算法
  • go 修改postgresql的配置参数
  • C++完成Query执行sql语句的接口封装和测试
  • 开启Android学习之旅-5-Activity全屏
  • CHS_01.1.4+操作系统体系结构 一
  • C++推箱子游戏开发
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 3.7、@ResponseBody 和 @RestController
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • CSS3 变换
  • FineReport中如何实现自动滚屏效果
  • HomeBrew常规使用教程
  • JavaScript学习总结——原型
  • jquery cookie
  • Linux快速复制或删除大量小文件
  • Lsb图片隐写
  • Markdown 语法简单说明
  • mysql innodb 索引使用指南
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Unix命令
  • vue数据传递--我有特殊的实现技巧
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 诡异!React stopPropagation失灵
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 老板让我十分钟上手nx-admin
  • 【云吞铺子】性能抖动剖析(二)
  • 阿里云服务器如何修改远程端口?
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • #include<初见C语言之指针(5)>
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (层次遍历)104. 二叉树的最大深度
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net core 连接数据库,通过数据库生成Modell
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @Validated和@Valid校验参数区别