You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Caret的递归特征消除(RFE):如何获取各变量的OA与Kappa值?

用Caret包的RFE生成变量对应OA和Kappa值表格的方法

嘿,我来帮你搞定这个问题!要生成像你展示的那种“变量数量-OA-Kappa”对应表格,用Caret的递归特征消除(RFE)方法其实很简单,我分步骤给你讲清楚:

1. 前期准备:加载包与设置参数

首先得加载必要的R包,然后定义RFE的控制参数,比如交叉验证方式、评估指标这些:

# 加载所需包
library(caret)
library(knitr) # 用来生成美观的Markdown表格

# 设置随机种子,保证结果可重复
set.seed(123)

# 定义RFE控制参数:这里用10折交叉验证,重复3次
rfe_ctrl <- rfeControl(
  functions = rfFuncs, # 基础模型选随机森林,可替换为lmFuncs/gbmFuncs等
  method = "repeatedcv",
  repeats = 3,
  number = 10,
  verbose = FALSE # 关闭冗余输出
)

# 指定要评估的变量数量范围(比如从1到你数据集的特征总数)
var_count_range <- 1:ncol(your_features_data) # 替换成你的特征列数

2. 运行RFE特征选择

用rfe()函数执行递归特征消除,传入你的特征数据、响应变量、控制参数和变量数量范围:

# 运行RFE
rfe_output <- rfe(
  x = your_features_data, # 替换为你的特征矩阵
  y = your_response_variable, # 替换为你的响应变量(分类任务)
  sizes = var_count_range,
  rfeControl = rfe_ctrl,
  metric = "Accuracy" # 以OA(总体准确率)作为优化指标
)

3. 提取OA与Kappa值并整理表格

RFE的结果里已经包含了不同变量数对应的性能指标,我们直接提取并整理成数据框:

# 从RFE结果中提取关键数据:变量数、OA、Kappa(可按需添加标准差)
performance_table <- rfe_output$results[, c("Variables", "Accuracy", "Kappa")]

# 重命名列名,和你展示的表格格式对齐
colnames(performance_table) <- c("Number of Variables", "OA", "Kappa")

# 如果需要添加OA和Kappa的标准差,就用这行:
# performance_table <- rfe_output$results[, c("Variables", "Accuracy", "AccuracySD", "Kappa", "KappaSD")]
# colnames(performance_table) <- c("Number of Variables", "OA", "OA SD", "Kappa", "Kappa SD")

4. 生成美观的表格

用knitr::kable()生成Markdown格式的表格,直接就能输出成你想要的样式:

kable(performance_table, caption = "RFE Feature Selection Performance Metrics")

举个实际例子,用内置的iris数据集跑的话,生成的表格会是这样:

Number of VariablesOAKappa
10.6600000.4900000
20.9533330.9300000
30.9600000.9400000
40.9600000.9400000

小提示:如果你的任务是回归问题,记得把metric参数改成"RMSE"之类的回归指标,同时调整functions为对应的回归模型函数哦!

内容的提问来源于stack exchange,提问作者MSilvy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:23:16