-1
我使用這些R腳本通過Min Max標準化數據。R反規範化數據
normalize <- function(x) {
return ((x - min(x))/(max(x) - min(x)))
}
mydata <- as.data.frame(lapply(mydata , normalize))
我怎樣才能使數據非標準化?
謝謝!
我使用這些R腳本通過Min Max標準化數據。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
功能...)
那麼這裏期望的輸出是什麼?爲什麼不把「標準化」版本保存到不同的變量中。使用此公式無法唯一地對數據進行非正常化。 'c(0,10)'將被標準化爲'c(0,1)',但'c(3,17)'也會被標準化。不可能說出原始值是什麼。 – MrFlick
原始數據例如是[(3,8,10,11,22,28),(4,17,20,21,26,40),(4,5,13,16,18,27)] – myID33
您應該修改帖子以包含重要信息(如示例數據),而不是將其留在評論中。 – Frank