r - 非规范化数据

标签 r normalization denormalization minmax

我使用此 R 代码使用最小值和最大值对数据进行了标准化:

normalize <- function(x) {
    return ((x - min(x)) / (max(x) - min(x)))
  }

mydata <- as.data.frame(lapply(mydata , normalize))

如何对数据进行非规范化?

最佳答案

本质上,你只需要反转算术:x1 = (x0-min)/(max-min)意味着 x0 = x1*(max-min) + min .但是,如果您要覆盖数据,则最好在规范化之前存储最小值和最大值,否则(正如@MrFlick 在评论中指出的那样)您注定要失败。

设置数据:

dd <- data.frame(x=1:5,y=6:10)

标准化:
normalize <- function(x) {
    return ((x - min(x)) / (max(x) - min(x)))
}
ddnorm <- as.data.frame(lapply(dd,normalize))
##      x    y
## 1 0.00 0.00
## 2 0.25 0.25
## 3 0.50 0.50
## 4 0.75 0.75
## 5 1.00 1.00

非规范化:
minvec <- sapply(dd,min)
maxvec <- sapply(dd,max)
denormalize <- function(x,minval,maxval) {
    x*(maxval-minval) + minval
}
as.data.frame(Map(denormalize,ddnorm,minvec,maxvec))
##   x  y
## 1 1  6
## 2 2  7
## 3 3  8
## 4 4  9
## 5 5 10

更聪明的normalize函数会将缩放变量作为属性附加到结果中(参见 ?scale 函数...)

关于r - 非规范化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39355942/

相关文章:

database - 如何在数据库中模拟打开/关闭状态?

mysql - 关于地址、城市、国家数据的规范化问题

r - 带有pdf的更平滑的渐变条图例

r - 错误 : processing vignette failed with diagnostics: 4 simultaneous processes spawned

mysql - 规范化超出 MySQL 知识范围?

asp.net - 两个外键引用相同的主键

r - 为 networkD3 应用程序实现工具提示

r - 将列表转换为相同长度的特殊矩阵

database - 反规范化以何种方式提高数据库性能?

r - 在 R 中预测后对值进行非规范化