我理解缩放数据矩阵以在线性回归模型中使用的概念。例如,在 R 中,您可以使用:
scaled.data <- scale(data, scale=TRUE)
我唯一的问题是,对于我想要预测输出值的新观察,它们如何正确缩放?会不会,scaled.new <- (new - mean(data)) / std(data)
?
我理解缩放数据矩阵以在线性回归模型中使用的概念。例如,在 R 中,您可以使用:
scaled.data <- scale(data, scale=TRUE)
我唯一的问题是,对于我想要预测输出值的新观察,它们如何正确缩放?会不会,scaled.new <- (new - mean(data)) / std(data)
?
对您的问题的简短回答是,是的 - scaled.new 的表达式是正确的(除了您想要sd
而不是std
)。
可能值得注意的是 scale 具有您可以使用的可选参数:
scaled.new <- scale(new, center = mean(data), scale = sd(data))
此外,由 scale (scaled.data) 返回的对象具有保存使用的数字居中和缩放(如果有)的属性,您可以使用:
scaled.new <- scale(new, attr(scaled.data, "scaled:center"), attr(scaled.data, "scaled:scale"))
当原始数据包含多于一列时,就会出现这种优势,因此需要考虑多种均值和/或标准偏差。
现在有更简单的方法可以做到这一点。比如包的preprocess
功能caret
library(caret)
preproc <- preProcess(data, method = c("center", "scale")
scaled.new <- predict(preproc, newdata = new)
或scale_by
在standardize
包装中
或使用receipes
包
library(recipes); library(dplyr)
rec <- recipe(~ ., data) %>% step_normalize(all_numeric()) %>% prep()
scaled.new <- rec %>% bake(new)