在基准实验中使用重采样的getResamplingIndices函数 – mlr

我在基准实验中使用了嵌套交叉验证。我希望检索每个外部循环中使用的实例的索引。我知道有一个getResamplingIndices()函数适合这个任务。但它不接受’BenchmarkResult’对象。有没有办法解决这个问题?这是一个例子:

res = benchmark(lrns, task, outer, measures = list(auc, ppv, npv), show.info = FALSE, models = T)getResamplingIndices(res)Error in getResamplingIndices(res) :   Assertion on 'object' failed: Must inherit from class 'ResampleResult', but has class 'BenchmarkResult'.

回答:

重采样索引在不同任务之间是相同的,所以你只需在BenchmarkResult对象中嵌套的ResamplingResult对象上应用它。

如果你希望为BenchmarkResult对象中的每个任务获取它,请执行以下操作:

inds_by_task = lapply(bmr$results, function(x) getResamplingIndices(x[[1]]))

请看下面的完整reprex示例。

library(mlr)#> Loading required package: ParamHelperslrns = list(makeLearner("classif.lda"), makeLearner("classif.rpart"))tasks = list(iris.task, sonar.task)rdesc = makeResampleDesc("CV", iters = 2L)meas = list(acc, ber)bmr = benchmark(lrns, tasks, rdesc, measures = meas, show.info = FALSE)getResamplingIndices(bmr$results$`iris-example`$classif.lda)#> $train.inds#> $train.inds[[1]]#>  [1]  25 136  62  77  22 114 101 145  87  34  93 120 133 126  76   4 105  97   7#> [20] 128  49  19 106   9  54   5  72 102  73  51 109 115  23  86  89 112 130  69#> [39]  57 122  53  12  60  40  36  70  83  90 108  81  38  50 129  75  71  59  47#> [58]  95  31 147  37  30 127  43 148 103  27  66 137  29 124  35 143 132  45#> #> $train.inds[[2]]#>  [1]  79 123  28  17  82  55 110   8 107  26 125 121  32  33  48 119  98  58 116#> [20] 144 139  67  13 142 111  16  65  21  74  42 113 149 117   2  99  68 140 104#> [39]  96 150   1  94  46 131 135  11  10 146  85  15  52  78  63 100   3 118 134#> [58]   6  88 138  41  39  92  56  84  61  20  24  91  80  18  64  14 141  44#> #> #> $test.inds#> $test.inds[[1]]#>  [1]   1   2   3   6   8  10  11  13  14  15  16  17  18  20  21  24  26  28  32#> [20]  33  39  41  42  44  46  48  52  55  56  58  61  63  64  65  67  68  74  78#> [39]  79  80  82  84  85  88  91  92  94  96  98  99 100 104 107 110 111 113 116#> [58] 117 118 119 121 123 125 131 134 135 138 139 140 141 142 144 146 149 150#> #> $test.inds[[2]]#>  [1]   4   5   7   9  12  19  22  23  25  27  29  30  31  34  35  36  37  38  40#> [20]  43  45  47  49  50  51  53  54  57  59  60  62  66  69  70  71  72  73  75#> [39]  76  77  81  83  86  87  89  90  93  95  97 101 102 103 105 106 108 109 112#> [58] 114 115 120 122 124 126 127 128 129 130 132 133 136 137 143 145 147 148

reprex包(v0.3.0)于2020-01-04创建

Related Posts

神经网络反向传播代码不工作

我需要编写一个简单的由1个输出节点、1个包含3个节点的…

值错误:y 包含先前未见过的标签:

我使用了 决策树分类器,我想将我的 输入 作为 字符串…

使用不平衡数据集进行特征选择时遇到的问题

我正在使用不平衡数据集(54:38:7%)进行特征选择…

广义随机森林/因果森林在Python上的应用

我在寻找Python上的广义随机森林/因果森林算法,但…

如何用PyTorch仅用标量损失来训练神经网络?

假设我们有一个神经网络,我们希望它能根据输入预测三个值…

什么是RNN中间隐藏状态的良好用途?

我已经以三种不同的方式使用了RNN/LSTM: 多对多…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注