添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首发于 R生信分析代码

机器学习-支持向量机递归特征消除(SVM-RFE)进行特征选择

A popular automatic method for feature selection provided by the caret R package is called Recursive Feature Elimination or RFE

特征选择是构建预测模型的重要步骤,因为它有助于识别对目标变量有重大影响的最相关特征。Caret R 包提供了几种特征选择方法,包括递归特征消除 (RFE)、Boruta 等。

递归特征消除 (RFE) 是一种向后选择方法,它从所有特征开始,然后根据模型的性能递归删除最不重要的特征。使用交叉验证技术评估模型的性能。RFE 方法根据特征的重要性提供特征排序,并且可以选择顶级特征来构建最终模型。

参考连接:

示例代码:

######################
# SVM-RFE算法
######################
set.seed(7)
# 加载库和包
library(mlbench)
library(caret)
# 加载数据集
data(PimaIndiansDiabetes)
control <- rfeControl(functions = caretFuncs, method = "cv", number = 5)  #cv 交叉验证次数5
# 执行SVM-RFE算法
results <- rfe(PimaIndiansDiabetes[,1:8],   #1-8列为预测变量
               PimaIndiansDiabetes[,9],    #9列为诊断变量
               sizes = c(1:8),  
               rfeControl = control,
               method = "svmRadial") # method = "svmRadial" specifies that the SVM model should use a radial kernel
# 结果分析
print(results)
# 列出选择的变量集
predictors(results)
# 绘制结果
plot(results, type=c("g", "o"))

####自运行####

  1. sample数据准备 predcm

> predcm
Penk Il12a Gcgr Rbp7 Inha Sctr Angptl4 Disease
1 12.13036 1.996333 5.519814 8.011266 8.141544 8.323751 3.513842 CT
2 12.47214 1.885137 5.333554 7.622010 7.688681 8.213333 6.022899 CT
3 12.37102 3.428833 4.718005 7.810952 8.514415 8.090377 4.087301 CT
4 12.33330 2.149880 7.141843 7.918717 8.251235 9.336407 5.627447 CT
5 13.17741 1.481118 6.897765 7.710872 8.592410 8.651590 2.949373 CT
6 13.04952 2.435240 5.431259 8.717871 9.505240 7.882379 6.802667 CT
7 12.47676 3.720820 5.340925 8.576574 8.269917 8.312933 6.899287 CT
8 14.18214 3.548621 3.550666 10.440700 6.072446 6.921723 11.107790 DC
9 13.47768 3.824755 4.736500 9.738375 7.408140 6.983921 10.007870 DC


######################
# SVM-RFE算法
######################
set.seed(7)
# 加载库和包
library(mlbench)
library(caret)
#载入数据集(clipboard)
predcm <- rio::import("clipboard",header=T)
#control设置
control <- rfeControl(functions = caretFuncs, method = "cv", number = 5)  #cv 交叉验证次数5
# 执行SVM-RFE算法
results <- rfe(predcm[,1:7], 
+                as.factor(predcm[,8]),   #诊断变量应为因子型
+                sizes = c(1:7), 
+                rfeControl = control,
+                method = "svmRadial")
# 结果分析