mlr:检索CV循环中generateFilterValuesData的输出
如果我使用MakeFilterRapper将学习者与过滤器方法融合,那么我知道我可以在交叉验证循环中使用该过滤器执行特征选择。据我所知,filterFeatures是在每个模型拟合之前调用的,它调用generateFilterValuesData。但是,在交叉验证的每次迭代中,是否可以使用该过滤器检索generateFilterValuesData生成的值 例如:mlr:检索CV循环中generateFilterValuesData的输出,r,mlr,R,Mlr,如果我使用MakeFilterRapper将学习者与过滤器方法融合,那么我知道我可以在交叉验证循环中使用该过滤器执行特征选择。据我所知,filterFeatures是在每个模型拟合之前调用的,它调用generateFilterValuesData。但是,在交叉验证的每次迭代中,是否可以使用该过滤器检索generateFilterValuesData生成的值 例如: library(survival) library(mlr) data(veteran) set.seed(24601) conf
library(survival)
library(mlr)
data(veteran)
set.seed(24601)
configureMlr(show.learner.output=TRUE, show.info=TRUE)
task_id = "MAS"
mas.task <- makeSurvTask(id = task_id, data = veteran, target = c("time", "status"))
mas.task <- createDummyFeatures(mas.task)
inner = makeResampleDesc("CV", iters=2, stratify=TRUE) # Tuning
outer = makeResampleDesc("CV", iters=3, stratify=TRUE) # Benchmarking
cox.lrn <- makeLearner(cl="surv.coxph", id = "coxph", predict.type="response")
cox.filt.uni.abs.lrn =
makeFilterWrapper(
makeLearner(cl="surv.coxph", id = "cox.filt.uni.abs", predict.type="response"),
fw.method="univariate.model.score",
fw.abs=7,
perf.learner=cox.lrn
)
learners = list( cox.filt.uni.abs.lrn )
bmr = benchmark(learners=learners, tasks=mas.task, resamplings=outer, measures=list(cindex), show.info = TRUE)
mods = getBMRModels(bmr, learner.ids = c('cox.filt.uni.abs.filtered'))
for (i in 1:length(mods[[task_id]]$cox.filt.uni.abs.filtered)) {
mod = mods$MAS$cox.filt.uni.abs.filtered[[i]]$learner.model[[1]]
print(str(mod, max.level=1))
**#Retrieve output of generateFilterValuesData here?**
}
库(生存)
图书馆(mlr)
数据(退伍军人)
种子集(24601)
configureMlr(show.learner.output=TRUE,show.info=TRUE)
任务\u id=“MAS”
mas.task您可以将resample()
中的extract
槽与getFilteredFeatures()
结合使用
库(mlr)
#>正在加载所需的包:ParamHelpers
lrn=makefilterRapper(learner=“classif.ksvm”,fw.method=“variance”,
fw.abs=5)
rdesc=makeResampleDesc(“CV”,iters=2)
res=重新采样(lrn、spam.task、rdesc、extract=getFilteredFeatures)
#>重采样:交叉验证
#>措施:mmce
#>[重采样]iter 1:0.1808696
#>[重采样]iter 2:0.1994785
#>
#>聚合结果:mmce.test.mean=0.1901740
#>
res$摘录
#> [[1]]
#>[1]“你”“乔治”“上校”“上校”
#>[5]“资本总额”
#>
#> [[2]]
#>[1]“你”“乔治”“上校”“上校”
#>[5]“资本总额”
由(v0.3.0)于2019-08-07创建谢谢,但这不仅仅是我需要的功能名称,而是generateFilterValuesData为这些功能生成的值。例如,如果我使用过滤器“univariate.model.score”,并将perf.learner设置为Cox learner,则generateFilterValuesData将返回每个功能的单变量Cox分数。不幸的是,generateFilterValuesData将任务作为其参数,我看不到如何在重采样循环中提取该子任务。我对此问题进行了另一次尝试(请参见上面的编辑),但无法理解它为什么不起作用。@panda几周后请不要编辑问题。除了我之外没有人会看到编辑。如果您觉得这是一个潜在的bug,请在Github上打开一个新问题或一个问题。好的。我会的。很抱歉我想如果我在同一个话题上提出一个新问题,就会被认为是重复的。