包装器normalizeFeatures如何处理验证集



我想知道函数normalizeFeatures如何与重采样策略一起工作。以下哪种说法是正确的?

  1. 整个任务数据被标准化
  2. 训练数据被归一化,并且该归一化的参数(比如说,类标准化中的均值和sd(被用于归一化验证数据(mlrCPO::retrafo以某种方式所做的(

感谢您的帮助!

函数normalizeFeatures()可以在data.frameTask对象上调用。在这两种情况下都是一样的。它只是使整个任务正常化。因此,陈述1(是正确的。

如果你想实现第二个,你有两个选择:

a(preprocWrapperCaret

包装器将缩放放在训练和预测之前。对于训练,将保存并应用缩放参数。对于预测,将应用保存的缩放参数。

library(mlr)
lrn = makeLearner("classif.svm")
lrn = makePreprocWrapperCaret(lrn, ppc.center = TRUE, ppc.scale = TRUE)
set.seed(1)
res = resample(lrn, iris.task, resampling = hout, models = TRUE)
# the scaling parameters learnt on the training spit
res$models[[1]]$learner.model$control$mean
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
5.831        3.030        3.782        1.222 
res$models[[1]]$learner.model$control$std
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
0.8611356    0.4118203    1.7487877    0.7710127 

b(mlrCPO

一种更优雅、更灵活的方法是使用mlrCPO包构建一个预处理管道,在这种情况下,它与包装器具有相同的效果。

library(mlr)
library(mlrCPO)
lrn = cpoScale(center = TRUE, scale = TRUE) %>>% makeLearner("classif.svm")
set.seed(1)
res = resample(lrn, iris.task, resampling = hout, models = TRUE)
# the scaling parameters learnt on the training spit
res$models[[1]]$learner.model$retrafo$element$state
$center
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
5.831        3.030        3.782        1.222 
$scale
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
0.8611356    0.4118203    1.7487877    0.7710127 

我设置种子以获得两种情况下相同的训练分割,从而使两种方法的学习缩放参数相同。

相关内容

  • 没有找到相关文章

最新更新