当前位置: 首页 > 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++推箱子游戏开发
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • JavaScript-如何实现克隆(clone)函数
  • [case10]使用RSQL实现端到端的动态查询
  • Angular Elements 及其运作原理
  • AngularJS指令开发(1)——参数详解
  • Bootstrap JS插件Alert源码分析
  • const let
  • E-HPC支持多队列管理和自动伸缩
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • iOS 系统授权开发
  • Java IO学习笔记一
  • java多线程
  • PHP 的 SAPI 是个什么东西
  • Promise面试题2实现异步串行执行
  • Python3爬取英雄联盟英雄皮肤大图
  • Travix是如何部署应用程序到Kubernetes上的
  • uni-app项目数字滚动
  • 订阅Forge Viewer所有的事件
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 机器学习 vs. 深度学习
  • 利用jquery编写加法运算验证码
  • 如何解决微信端直接跳WAP端
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 优化 Vue 项目编译文件大小
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Nginx实现动静分离
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​Java基础复习笔记 第16章:网络编程
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # 数仓建模:如何构建主题宽表模型?
  • #AngularJS#$sce.trustAsResourceUrl
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (分布式缓存)Redis分片集群
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (七)c52学习之旅-中断
  • (三)Honghu Cloud云架构一定时调度平台
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十六)一篇文章学会Java的常用API
  • (转)Windows2003安全设置/维护