我在基准测试中使用嵌套交叉验证。我想检索用于每个外部循环的实例的索引。我知道有一个功能getResamplingIndices()
适合此任务。但它不会接受"基准结果"对象。有没有办法解决这个问题?下面是一个示例:
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]]))
有关完整的参考资料,请参见下文。
library(mlr)
#> Loading required package: ParamHelpers
lrns = 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
创建于 2020-01-04 由 reprex 软件包 (v0.3.0(