在预测之前是不是有必要对数据进行中心化和缩放?

Posted

技术标签:

【中文标题】在预测之前是不是有必要对数据进行中心化和缩放?【英文标题】:is it necessary to center and scale data before predicting?在预测之前是否有必要对数据进行中心化和缩放? 【发布时间】:2016-04-11 19:51:26 【问题描述】:

在 caret 包的 train 函数中,可以执行预测变量的居中和缩放,如下例所示:

knnFit <- train(Direction ~ ., data = training, method = "knn",
                preProcess = c("center","scale"))

在训练中设置此转换应该可以更好地评估算法在重采样期间的性能。

在这种情况下,当我使用模型来预测新数据的响应时,我应该关心居中和缩放,还是将这个操作包含在最终模型中?

下面的操作就够了吗?

pred <- predict(knnFit, newdata = test)

谢谢!

【问题讨论】:

不,以前您应该居中和缩放。 ***.com/questions/15468866/… 和 ***.com/questions/15215457/… 【参考方案1】:

在 train 对象中指定的 preProces 将应用于新数据,而无需先对新数据进行预处理。所以你的操作就足够了。

还可以查看下面插入符号网站的摘录。还有一整节纯粹是关于预处理的。绝对值得您花时间阅读。

您可以在此处找到caret website。

这些处理步骤将在任何预测期间应用 使用 predict.train、extractPrediction 或 extractProbs 生成(参见 本文档后面的详细信息)。预处理不会 应用于直接使用 object$finalModel 对象的预测。

【讨论】:

以上是关于在预测之前是不是有必要对数据进行中心化和缩放?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sklearn post-cross_val_predict 模型对另一个缩放数据集进行预测?以及模型是不是可以序列化?

您是不是对训练和测试数据分别应用最小最大缩放?

R语言使用caret包的predict函数对模型在测试集上的表现进行推理和预测predict函数对测试数据集进行数据预处理(和训练集的初始方式保持一致):缺失值填充数值变量最小最大缩放独热编码

统计学2017.05时间序列数据预测与分析

sklearn:应用相同的缩放来训练和预测管道

时间序列: 铛铛铛!预测终于来了,是不是等很久了?