我如何在 benchmark() 中考虑 "failed" 个学习者

How can I account for "failed" learners in benchmark()

我有一长串 task/learner/resampling 组合。我通过

执行重采样
design = data.table(
  task = list_of_tasks,
  learner = list_of_learners,
  resampling = list_of_resamplings
)

bmr = benchmark(design) 

tab = bmr$aggregate(c(msr("classif.acc"))) 


最后一个命令失败,我收到以下错误消息:

Error in assert_classif(truth, response = response) : Assertion on 'response' failed: Contains missing values (element 1).

我如何检查哪里出了问题?学习者完成的任务略有不同,它们都是“标准”学习者(支持向量机、朴素贝叶斯)与前面 po("scale") 的组合。任务目标的预测变量中没有缺失数据。

至少一名学习者预测了 NAs。在预测中搜索 NA 以识别失败的学习者。

library(mlr3)
library(mlr3misc)

# experiment
learner_rpart = lrn("classif.rpart")
learner_debug = lrn("classif.debug", predict_missing = 0.5)
task = tsk("pima")
resampling = rsmp("cv", folds = 3)
design = benchmark_grid(task, list(learner_rpart, learner_debug), resampling)
bmr = benchmark(design)

# search for predictions with NAs
tab = as.data.table(bmr)
tab[map_lgl(tab$prediction, function(pred) any(is.na(pred$response)))]

你应该 post 一个新问题,其代表包括失败的学习者、任务和重采样。