如何在mlr3中提取ResampleResult/BenchmarkResult的标准差?
在mlr3中提取ResampleResult/BenchmarkResult的标准差
处理ResampleResult(单重采样结果)
如果你有单个ResampleResult对象,直接读取每一轮重采样的指标得分后计算标准差即可:
# 假设 rr 是你的 ResampleResult 对象 # 提取所有轮次的目标指标得分(根据实际指标ID调整) rr_scores <- rr$data$fbeta_test # 计算标准差 sd(rr_scores)
处理BenchmarkResult(基准测试结果)
BenchmarkResult包含多组任务、学习器的重采样数据,需要先通过score()方法获取所有轮次的详细得分,再分组计算标准差:
结合你提供的代码,示例如下:
measures <- list( mlr3::msr("classif.fbeta", predict_sets = "train", id = "fbeta_train"), mlr3::msr("classif.fbeta", id = "fbeta_test") ) # 获取所有重采样轮次的详细得分数据 bmr_scores <- bmr$score(measures) # 按任务和学习器分组,同时计算均值与标准差 library(data.table) bmr_scores[, .( fbeta_train_mean = mean(fbeta_train), fbeta_train_sd = sd(fbeta_train), fbeta_test_mean = mean(fbeta_test), fbeta_test_sd = sd(fbeta_test) ), by = c("task_id", "learner_id")]
解释:score()方法返回的data.table包含每一轮重采样的所有指标结果,通过by = c("task_id", "learner_id")分组后,就能对每个任务-学习器组合分别计算均值和标准差。
内容的提问来源于stack exchange,提问作者Lucas Teixeira
相关产品推荐
相关产品推荐

