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

《Applied Machine Learning Using mlr3 in R》示例执行报错,请求排查原因

解决mlr3 stacking管道中ID重复的错误

这个错误不是系统配置问题,是mlr3pipelines版本更新后,默认节点ID命名规则变化导致的示例代码兼容性问题——重复调用ppl("robustify")会生成相同默认ID的管道节点,和stacking组件内部的节点ID冲突。

修复方法

给重复使用的robustify管道指定唯一ID,同时也可以给stacking中的学习器显式设置ID避免潜在冲突:

library(mlr3verse)
tasks = tsks(c("breast_cancer", "sonar"))

# 给第一个robustify指定唯一ID
glrn_rf_tuned = as_learner(ppl("robustify", id = "robustify_rf") %>>% auto_tuner(
  tnr("grid_search", resolution = 5),
  lrn("classif.ranger", num.trees = to_tune(200, 500)),
  rsmp("holdout")
))
glrn_rf_tuned$id = "RF"

# 给第二个robustify指定不同的唯一ID,同时给stacking内的学习器设置ID
glrn_stack = as_learner(ppl("robustify", id = "robustify_stack") %>>% 
  ppl("stacking", 
     lrns(c("classif.rpart", "classif.kknn"), ids = c("rpart_base", "kknn_base")), 
     lrn("classif.log_reg", id = "stack_meta")))

补充说明

如果不需要在stacking前重复做robustify预处理(stacking内部的学习器可以通过各自的逻辑处理数据),也可以直接去掉stacking前的ppl("robustify"),同样能解决ID冲突问题:

glrn_stack = as_learner(ppl("stacking", lrns(c("classif.rpart", "classif.kknn")), lrn("classif.log_reg")))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:47:03