当我使用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上发布。