基于现有数据创建了一个线性模型,我需要规范化我想要预测的数据

时间:2018-04-14 22:39:27

标签: r normalization data-mining

所以我创建了一个与时间预订人数相对应的线性模型。对于这两个数据,我将数据标准化为广泛使用的0-1范围,并使用lm()绘制,预订是我想要使用时间预测的。

但现在我想预测一天中的某些时间可能会有什么预订。我也需要将它们标准化,但我不确定哪种方式。我是自己规范化它们还是应该将它们包含在我在预测之前在开始时标准化的原始时间数据中。我认为两者都会回放不同的归一化值,这会影响我的预测。

基本上,新时代应该以哪种方式自行规范化,或者作为原始时间数据的一部分?

1 个答案:

答案 0 :(得分:1)

根据原始数据的最小值和最大值对数据进行标准化。为此,您必须保留原始数据的最小值和最大值;如果您将原始变量转换为适当的[0,1]比例,丢弃原始数据,则会被卡住。

合并您的评论:如果您的原始预测变量是x0并且您使用了

(x0-min(x0))/(max(x0)-min(x0)) 

要转换数据进行分析,您可以使用

(x1-min(x0))/(max(x0)-min(x0)) 

转换新变量x1进行预测(假设您没有用其缩放版本替换x0!)

内置scale()函数将原始数据的属性附加到转换后的数据,这有助于类似地转换其他数据集(或反向转换)。 (令人困惑的是,该函数标记了从原始值center中减去的值; scale是移位值被划分的值。在您的情况下,center是{{1 } {,而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"))
}