mlr - 无法在 ranger_permutation 过滤器中使用参数 'importance'
mlr - unable to use parameter 'importance' in ranger_permutation filter
当我尝试使用过滤器 'ranger_permutation' 并将一些参数传递给 makeFilterWrapper 中的过滤器时,我发现我无法使用参数 'importance',因为该名称与另一个参数冲突,但是我不明白在哪里或为什么。当我 运行 下面的代码时,我收到以下错误消息:
Error in setHyperPars(learner = wl, ..., par.vals = par.vals):
Assertion on 'parameter settings' failed: Must have unique names, but element 4 is duplicated
我在使用其他基础学习器时也遇到了这个错误。如果我删除参数 'importance',问题就会消失,但如果我删除其他参数则不会。我也可以 运行 单独使用 ranger,而不是作为过滤器,使用相同的参数。
library(survival)
#> Warning: package 'survival' was built under R version 3.5.3
library(mlr)
#> Loading required package: ParamHelpers
data(veteran)
set.seed(24601)
task_id = "VET"
vet.task <- makeSurvTask(id = task_id, data = veteran, target = c("time", "status"))
vet.task <- createDummyFeatures(vet.task)
outer = makeResampleDesc("CV", iters=2, stratify=TRUE)
set.seed(24601, "L'Ecuyer")
cox.lrn <- makeLearner(cl="surv.coxph", id = "Ranger_Cox", predict.type="response")
filt <- makeFilterWrapper(cox.lrn, fw.method="ranger_permutation", fw.abs=5, cache=TRUE, num.trees=1000, splitrule="maxstat", importance="permutation")
bmr = benchmark(filt, vet.task, outer, list(cindex), show.info = TRUE, models=TRUE, keep.extract=TRUE)
#> Task: VET, Learner: Ranger_Cox.filtered
#> Resampling: cross-validation
#> Measures: cindex
#> Error in setHyperPars(learner = wl, ..., par.vals = par.vals): Assertion on 'parameter settings' failed: Must have unique names, but element 4 is duplicated.
由 reprex package (v0.3.0)
于 2019-09-25 创建
当您设置 fw.method = "ranger_permutation"
时,importance = "permutation"
已在内部设置。因此,当您强制 importance = "permutation"
它被定义两次(重复)并且错误检查抱怨。
这可以从 mlr 实现中看出:https://github.com/mlr-org/mlr/blob/master/R/Filter.R makeFilter(name = "ranger_permutation"...
已经定义了 importance = "permutation"
。
当我尝试使用过滤器 'ranger_permutation' 并将一些参数传递给 makeFilterWrapper 中的过滤器时,我发现我无法使用参数 'importance',因为该名称与另一个参数冲突,但是我不明白在哪里或为什么。当我 运行 下面的代码时,我收到以下错误消息:
Error in setHyperPars(learner = wl, ..., par.vals = par.vals):
Assertion on 'parameter settings' failed: Must have unique names, but element 4 is duplicated
我在使用其他基础学习器时也遇到了这个错误。如果我删除参数 'importance',问题就会消失,但如果我删除其他参数则不会。我也可以 运行 单独使用 ranger,而不是作为过滤器,使用相同的参数。
library(survival)
#> Warning: package 'survival' was built under R version 3.5.3
library(mlr)
#> Loading required package: ParamHelpers
data(veteran)
set.seed(24601)
task_id = "VET"
vet.task <- makeSurvTask(id = task_id, data = veteran, target = c("time", "status"))
vet.task <- createDummyFeatures(vet.task)
outer = makeResampleDesc("CV", iters=2, stratify=TRUE)
set.seed(24601, "L'Ecuyer")
cox.lrn <- makeLearner(cl="surv.coxph", id = "Ranger_Cox", predict.type="response")
filt <- makeFilterWrapper(cox.lrn, fw.method="ranger_permutation", fw.abs=5, cache=TRUE, num.trees=1000, splitrule="maxstat", importance="permutation")
bmr = benchmark(filt, vet.task, outer, list(cindex), show.info = TRUE, models=TRUE, keep.extract=TRUE)
#> Task: VET, Learner: Ranger_Cox.filtered
#> Resampling: cross-validation
#> Measures: cindex
#> Error in setHyperPars(learner = wl, ..., par.vals = par.vals): Assertion on 'parameter settings' failed: Must have unique names, but element 4 is duplicated.
由 reprex package (v0.3.0)
于 2019-09-25 创建当您设置 fw.method = "ranger_permutation"
时,importance = "permutation"
已在内部设置。因此,当您强制 importance = "permutation"
它被定义两次(重复)并且错误检查抱怨。
这可以从 mlr 实现中看出:https://github.com/mlr-org/mlr/blob/master/R/Filter.R makeFilter(name = "ranger_permutation"...
已经定义了 importance = "permutation"
。