Мне нужно сравнить разных учеников по нескольким задачам (> 100 000 часовых температурных записей с метеостанций) в контрольном эксперименте.
Поскольку один из моих учеников может иногда терпеть неудачу (и это приемлемо), мне нужно решение (я полагаю, с trycatch()
или 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
a, сделать какой-нибудь специальный код для работы с его результатами?
Заранее спасибо за вашу поддержку