【问题标题】:Created a linear model based on existing data, I need to normalize data I want to predict根据现有数据创建线性模型,我需要对要预测的数据进行归一化
【发布时间】:2018-04-15 07:58:26
【问题描述】:

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

但现在我想预测一天中晚些时候的预订情况。我也需要将它们标准化,但我不确定哪种方式。我是自己对它们进行归一化,还是应该将它们包含在我在预测之前一开始归一化的原始时间数据中。我认为两者都会返回不同的标准化值,这会影响我的预测。

那么基本上,新时间应该以哪种方式标准化,单独标准化还是作为原始时间数据的一部分?

【问题讨论】:

  • 您不需要为 linear 模型执行线性归一化...

标签: r normalization data-mining


【解决方案1】:

根据原始数据的最小值和最大值对数据进行归一化。为此,您必须保留原始数据的最小值和最大值;如果您将原始变量转换为 [0,1] 比例,丢弃原始数据,您就会陷入困境。

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

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

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

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

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

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

【讨论】:

  • 我坚持原来的价值观是的。为了规范化,我使用了公式 (x-min(x))/(max(x)-min(x)) 我可以只像这样使用该公式而不是 (x1-min (x))/(max(x)-min(x)) 其中 'x1' 是我要预测的新时间值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2015-11-30
相关资源
最近更新 更多