在引导中使用数据转换的 MLR3 遇到错误

问题描述

我正在尝试使用引导重采样作为我在 mlr3 中的交叉验证,并且一直在追踪错误的原因:

as_data_backend.data.frame(backend,primary_key = row_ids) 中的错误: 对“primary_key”的断言失败:包含重复值,位置 2。

位置发生变化(可能是第一个重复的行)。根据错误消息,我首先认为这是包含行名的问题,因此我将它们设置为 col_type$name,并尝试在创建任务之前从数据中删除行名(不走运!)。

在尝试创建 reprex 时,我缩小了范围以转换管道运算符,如“scale”和“pca”作为原因:

library("mlr3verse")

task <- tsk('sonar')

pipe = po('scale') %>>%
  po(lrn('classif.rpart'))

ps <- ParamSet$new(list(
  ParamDbl$new("classif.rpart.cp",lower = 0,upper = 0.05)
))

glrn <- GraphLearner$new(pipe) 

glrn$predict_type <- "prob"

bootstrap <- rsmp("bootstrap",ratio = 1,repeats = 5)

instance <- TuningInstanceSingleCrit$new(
  task = task,learner = glrn,resampling = bootstrap,measure = msr("classif.auc"),search_space = ps,terminator = trm("evals",n_evals = 100)
)

tuner <- tnr("random_search")
tuner$optimize(instance)

我也尝试过网格搜索,而不是随机的、不同的学习者,包括 rsmp 中的标志“duplicated_ids = TRUE”,但没有成功。但是,更改为 CV 交叉验证确实可以解决问题。

作为参考,在完整的管道/图表中,我正在尝试不同的特征过滤器和学习器来识别候选管道。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...