根据原始数据的最小值和最大值对数据进行归一化。为此,您必须保留原始数据的最小值和最大值;如果您将原始变量转换为 [0,1] 比例,丢弃原始数据,您就会陷入困境。
合并您的评论:如果您的原始预测器是 x0 并且您使用了
(x0-min(x0))/(max(x0)-min(x0))
要转换数据以供分析,您可以使用
(x1-min(x0))/(max(x0)-min(x0))
转换您的新变量 x1 以进行预测(假设您没有将 x0 替换为其缩放版本!)
内置的scale() 函数将原始数据的属性附加到转换后的数据中,这有助于类似地转换其他数据集(或反向转换)。 (令人困惑的是,该函数标记了从原始值center 中减去的值;scale 是移位值除以的值。在您的情况下,center 是min(x),而scale 是max(x)-min(x) = diff(range(x)).)
dd <- data.frame(x=1:10)
scalefun <- function(x) drop(scale(x,center=min(x),scale=diff(range(x))))
dd <- transform(dd,x=scalefun(x))
反向转换函数
unscalefun <- function(x,orig=x) {
c(x*attr(orig,"scaled:scale") + attr(orig,"scaled:center"))
}
根据另一个数据集进行变换的函数:
rescalefun <- function(x,orig=x) {
scale(x,scale=attr(orig,"scaled:scale"),center=attr(orig,"scaled:center"))
}
rescalefun(1:20)