当某些迭代具有NaN值时,在mlr3 ResampleResult中聚合性能度量



我想为留一重采样的所有迭代计算一个聚合性能度量(精度(。

对于单个迭代,度量的结果只能是0、1(如果预测为正类(或NaN(如果预测了负类(。

我想将其聚合到整个重采样的现有值上,但聚合结果始终是NaN(自然,在许多迭代中都是NaN(。我不知道(从ResampleResult$aggregate((的帮助页面(如何做到这一点:

gr = po(lrn("classif.kknn", predict_type = "prob"),
param_vals = list(k = 10, distance=2, kernel='rectangular' )) %>>%
po("threshold", param_vals = list(thresholds = 0.5))
glrn = GraphLearner$new(gr)
resampling = rsmp("loo")

rr = resample(task, glrn, resampling, store_models = TRUE)
rr$aggregate(msr("classif.precision"))

我怀疑这是否是一种统计上合理的方法,但从技术上讲,您可以通过覆盖aggregator插槽来设置度量的聚合函数:

m = msr("classif.precision")
m$aggregator = function(x) mean(x, na.rm = TRUE)

最新更新