最近,我正在学习如何使用mlr3包。我在做一个特征选择,并想比较模型results.However,我想知道如何从Benchmarkresult结果中获得模型结果,比如在特性选择的学习者模型中使用了哪些特性。
这是我的代码:
#setup task
task = TaskClassif$new(id = "SPI", backend = test, target = "recidivism")
#learner of non-FS
learner_ranger = lrn("classif.ranger",
predict_type = "prob",
predict_sets = c("train", "test")) %>% print()
# set up for FS
terminator = trm("evals", n_evals = 20)
fselector = fs("random_search")
# create a new learner of FS
at = AutoFSelector$new(
learner = learner_ranger,
resampling = rsmp("holdout"),
measure = msr("classif.auc"),
terminator = terminator,
fselector = fselector
)
at
# To compare the optimized feature subset with the complete feature set, we can use benchmark() :
grid = benchmark_grid(task = task,
learner = list(at,learner_ranger),
resampling = rsmp("holdout"))
#
set.seed(1)
bmr_Wra = benchmark(grid, store_models = TRUE)
#
measures = list(
msr("classif.auc", id = "auc_train", predict_sets = "train"),
msr("classif.auc", id = "auc_test"),
msr("classif.acc", id = "acc_test"),
msr("classif.ce",id = "ce_test")
)
bmr_Wra$aggregate(measures)
# ce
autoplot(bmr_Wra) + theme(axis.text.x = element_text(angle = 45, hjust = 1))
# roc
autoplot(bmr_Wra, type = "roc")
# prc
autoplot(bmr_Wra, type = "prc")`我注意到:
注意,通过这个领域访问学习模型是不可行的,因为培训任务将是不明确的。由于这个原因,返回的学习者在返回之前被重新安置。相反,从$score()返回的表中选择一行。
因此,我使用bmr_Wra$score(),但我仍然需要进一步分析模型和提取信息,如变量的重要性。任何帮助都是非常感谢的。非常感谢!
发布于 2021-06-21 14:24:07
从gh安装最新的mlr3fselect版本,该版本提供了新的辅助函数。
extract_inner_fselect_results(bmr_Wra)
返回内部重采样循环的最佳功能集。由于您使用的是持久化验证,所以它只是一组。
extract_inner_fselect_archives(bmr_Wra)
返回内部重采样循环的所有评估功能集。如果要访问存储在AutoTuner s中的相应模型,请使用store_models = TRUE创建ResampleResult。
您可能需要阅读关于嵌套重采样的书中的章节。
https://stackoverflow.com/questions/68067696
复制相似问题