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

mlr3中AutoFSelector输出多性能指标的代码修改咨询

解决mlr3 AutoFSelector多性能指标输出问题

错误原因

AutoFSelector$new()的measure参数仅接受单个性能指标(用于指导特征选择的优化方向),而你用msrs()生成了指标列表(list类型),不符合参数要求,因此触发no applicable method for 'as_measure' applied to an object of class "list"错误。

修改方案

要输出多性能指标,需分两步:指定一个核心指标驱动特征选择,同时传递额外指标用于记录。修改后的代码如下:

ARMSS <- read.csv("Index ARMSS Proteomics Final.csv", row.names=1)

set.seed(123, "L'Ecuyer")

# 创建回归任务
task = as_task_regr(ARMSS, target = "Index.ARMSS")

# 定义学习器
learner = lrn("regr.ranger", importance = "impurity")
set_threads(learner, n = 8)

# 内部交叉验证设置
resampling_inner = rsmp("cv", folds = 7)
# 指定特征选择的核心优化指标
main_measure = msr("regr.rmse")
# 定义需要额外记录的其他指标
additional_measures = msrs(c("regr.srho"))
terminator = trm("none")

# 初始化AutoFSelector,传入核心指标+额外指标
at = AutoFSelector$new(
  learner = learner,
  resampling = resampling_inner,
  measure = main_measure,
  additional_measures = additional_measures,  # 添加额外指标
  terminator = terminator,
  fselect = fs("rfe", n_features = 1, feature_fraction = 0.5, recursive = FALSE),
  store_models = TRUE
)

# 运行特征选择
at$train(task)

# 提取包含多指标的结果
results <- at$archive$data()
# 查看关键列:特征子集、RMSE、Spearman相关系数
print(results[, c("features", "regr.rmse", "regr.srho")])

说明

  • measure参数必须是单个指标,用于指导特征选择算法筛选最优特征子集。
  • additional_measures参数接受指标列表,会在特征选择的每一步交叉验证中计算并记录这些指标。
  • 运行完成后,通过at$archive$data()可以获取所有候选特征子集对应的完整多指标结果,按需提取即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:15:34