r - 如果特定学习者在特定任务上失败,如何使基准函数不失败?
问题描述
我需要在基准实验中比较各种学习者的多项任务(> 100 000 个气象站的每小时温度记录)。
因为我的一个学习者有时可能会失败(这是可以接受的)我需要一个解决方案(我猜是trycatch()
or purrr::possibly()
)以便 mlr 返回,而不是整个基准测试的错误,对于它所执行的任务的受害学习者返回 NULL失败的。
这将让我稍后了解它在哪些情况下失败
到目前为止,我已经实现了这一点:
bmrs = tasks %>%
purrr::map(possibly(~mlr::benchmark(.,
learners = my_learners,
resamplings = mlr::makeResampleDesc("LOO"),
measures = rmse,
keep.pred = TRUE,
models = FALSE), NULL))
请注意,我将函数映射mlr::benchamrk()
到每个任务,而不是一次传递所有任务。这正是因为我的目标是当特定学习者在特定任务上失败并引发错误时获得 NULL 值。但是这样做会为我的学习者在当前任务中的整个基准返回一个 NULL 值,而不是只为被指控的学习者返回一个 NULL 值。
我已经成功地实现了我想要的函数mlr::resample()
传递给purrr::map()
它在每个学习者上迭代的地方,但是我没有所有 bmr 方便的函数mlr::getBMR...()
,我以后可能需要这些函数来执行一些基准后分析,比如合并基准测试结果:
resample_by_task = function(t) {
learners %>% purrr::map(possibly(
~ mlr::resample(.,
task = t,
resampling = mlr::makeResampleDesc("LOO"),
measures = rmse,
keep.pred = TRUE,
models = models), NULL))}
bmrs = purrr::map(tasks, ~resample_by_task(.))
那么,您会建议我使用mlr::benchmark
由自定义错误捕获系统包装的函数还是使用mlr::resample
一些自定义代码来处理其结果?
预先感谢您的支持
解决方案
您可以设置 on.learner.error mlr 包选项,请参阅https://mlr.mlr-org.com/reference/configureMlr.html#arguments。
推荐阅读
- macos - 苹果系统。登录时禁用应用程序启动(禁用自动运行)
- excel - 我们如何在excel中找到带有一些异常值的数据数组的局部最大值和局部最小值
- python - Python。在函数中反转字符串
- typescript - 如何在打字稿中的 Firebase 函数中获取 TImestamp 类型?
- html - 如何使用 col-sm-3 将 5 张卡片保持在同一行
- java - 语法错误:Java 中的二进制整数类问题
- android - 我可以将 jpg 用于 Android/iOS 启动画面吗?
- scala - 如何替换 spark scala 列中字符串的每个第一个字符?
- python - 熊猫:在滚动窗口中查找最大值并返回最大值行的另一列的总和并进行四行
- css - 切换组件时 CSS 无限动画停止移动