【问题标题】:Repeated crossvalidation on subset of data in MLR对 MLR 中的数据子集进行重复交叉验证
【发布时间】:2016-01-27 03:00:42
【问题描述】:

我正在尝试设置一个mlr 分类任务,其中 75% 的数据将用于训练,这 75% 将通过重复交叉验证重新采样。

我的任务设置如下

pred.Bin.Task <- makeClassifTask(id="CountyCrime", data=df, target="count.bins")
preProc.Task <- normalizeFeatures(pred.Bin.Task, method="range")
rdesc <- makeResampleDesc("RepCV", reps=3, folds=5)
inTraining <- caret::createDataPartition(df$count.bins, p = .75, list = FALSE)

但我无法让重采样工作。当我做lda.train &lt;- resample("classif.lda", preProc.Task, rdesc, subset=inTraining)

我得到了错误

Error in setHyperPars2.Learner(learner, insert(par.vals, args)) : 
  classif.lda: Setting parameter subset without available description object!
You can switch off this check by using configureMlr!

没有子集的训练(即lda.train &lt;- resample("classif.lda", preProc.Task, rdesc))有效。

我宁愿拥有整个数据,而不仅仅是任务中的训练数据,这样当我使用保留数据进行预测时,我不需要预处理和重新提交新数据。关于如何正确设置子集的任何建议?

【问题讨论】:

    标签: r mlr


    【解决方案1】:

    错误的原因是resample函数没有subset参数,所以它被传递给了学习器,学习器也没有这样的参数。

    mlr 的重新采样描述不允许您将数据完全分开(即在训练期间根本不使用它),因为您正在尝试这样做。但是,您可以使用subsetTask 函数对数据进行分区,而无需再次进行预处理:

    preproc.task.train = subsetTask(preproc.task, inTraining)
    resample("classif.lda", preproc.task.train, rdesc)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 2017-02-09
      • 2020-03-18
      • 2014-01-13
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 2016-01-19
      相关资源
      最近更新 更多