mlr-参数名称与randomForestSRC_var.select过滤器使用方法参数冲突

时间:2019-09-25 05:15:56

标签: r mlr

当我使用randomForestSRC_var.select过滤器并将方法参数传递给它时(例如method =“ vh”进行变量搜寻),我会遇到名称冲突,因为内部函数还使用了一个称为method的参数。这在Github上是一个问题,但据说已经解决:https://github.com/mlr-org/mlr/issues/1066。我还在Github上发布了一个问题:https://github.com/mlr-org/mlr/issues/2639,但我认为这可能是一个更合适的论坛,以防万一这不是错误,而是我的错。

这是我的代码:

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)
tuning = makeResampleDesc("CV", iters=2, stratify=TRUE) 
outer = makeResampleDesc("CV", iters=2, stratify=TRUE)

filt = makeFilterWrapper(
    makeLearner(cl="surv.coxph", id = "cox.filt.rfsrc", predict.type="response"), 
    fw.method="randomForestSRC_var.select",
    fw.abs=4,
    cache=TRUE,
    ntree=500,
    method="vh"
)
bmr = benchmark(filt, vet.task, outer, list(cindex), show.info = TRUE, models=TRUE, keep.extract=FALSE)
#> Task: VET, Learner: cox.filt.rfsrc.filtered
#> Resampling: cross-validation
#> Measures:             cindex
#> Error in (function (task, method = "randomForestSRC_importance", fval = NULL, : formal argument "method" matched by multiple actual arguments

reprex package(v0.3.0)于2019-09-25创建

如果我将参数方法更改为“ metho”以尝试避免冲突,则会得到另一个错误:

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)
tuning = makeResampleDesc("CV", iters=2, stratify=TRUE) 
outer = makeResampleDesc("CV", iters=2, stratify=TRUE)

filt = makeFilterWrapper(
    makeLearner(cl="surv.coxph", id = "cox.filt.rfsrc", predict.type="response"), 
    fw.method="randomForestSRC_var.select",
    fw.abs=4,
    cache=TRUE,
    ntree=500,
    metho="vh"
)
bmr = benchmark(filt, vet.task, outer, list(cindex), show.info = TRUE, models=TRUE, keep.extract=FALSE)
#> Task: VET, Learner: cox.filt.rfsrc.filtered
#> Resampling: cross-validation
#> Measures:             cindex
#> Error in -im[, 1L]: invalid argument to unary operator

reprex package(v0.3.0)于2019-09-25创建

此错误似乎来自该行:

setNames(-im[, 1L], rownames(im))
在RF最小深度过滤器中,

,我认为这意味着变量im(过滤器的结果)为NULL(尽管我不确定为什么)。 有什么办法可以解决这个问题?很抱歉在此处和GH上发布。

1 个答案:

答案 0 :(得分:1)

已在此Pull Request中固定在上游。