我想知道该功能如何normalizeFeatures
与重采样策略一起工作。以下哪个陈述是正确的?
mlrCPO::retrafo
以某种方式进行)。感谢您的帮助!
normalizeFeatures()
可以在data.frame
和Task
对象上调用该函数。在两种情况下,它都执行相同的操作。它只是使整个任务正常化。因此,陈述1)是正确的。
如果要实现第二个目标,则有两个选择:
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
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
我将种子设置为在两种情况下均获得相同的训练分割,以使所学习的缩放参数对于两种方法均相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句