Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mlr:检索CV循环中generateFilterValuesData的输出_R_Mlr - Fatal编程技术网

mlr:检索CV循环中generateFilterValuesData的输出

mlr:检索CV循环中generateFilterValuesData的输出,r,mlr,R,Mlr,如果我使用MakeFilterRapper将学习者与过滤器方法融合,那么我知道我可以在交叉验证循环中使用该过滤器执行特征选择。据我所知,filterFeatures是在每个模型拟合之前调用的,它调用generateFilterValuesData。但是,在交叉验证的每次迭代中,是否可以使用该过滤器检索generateFilterValuesData生成的值 例如: library(survival) library(mlr) data(veteran) set.seed(24601) conf

如果我使用MakeFilterRapper将学习者与过滤器方法融合,那么我知道我可以在交叉验证循环中使用该过滤器执行特征选择。据我所知,filterFeatures是在每个模型拟合之前调用的,它调用generateFilterValuesData。但是,在交叉验证的每次迭代中,是否可以使用该过滤器检索generateFilterValuesData生成的值

例如:

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上打开一个新问题或一个问题。好的。我会的。很抱歉我想如果我在同一个话题上提出一个新问题,就会被认为是重复的。