2017-02-06 4 views
0

データフレームの正規化のために次の方法を試しました。私は非正規化データフレームに問題があります。 どのように非正規化するか。データフレームのデータを非正規化する方法

 form <- function(x) {(x - min(x, na.rm=TRUE))/(max(x,na.rm=TRUE) - 
              min(x, na.rm=TRUE))} 
     normed <- as.data.frame(lapply(m1, form)) 

データセット

 'data.frame': 96611 obs. of 10 variables: 
     $ Timestamp  : num 1388619000 1388619900 1388620800 1388621700 1388622600 ... 
     $ avg.price  : num -14.55 -10.73 0.65 0.62 0.18 ... 
     $ weekday   : num 4 4 5 5 5 5 5 5 5 5 ... 
     $ total.energy : num 0.76 0.18 330.56 1.75 1.62 ... 
     $ O.avgprice  : num -10.17 -13.79 -2.64 -9.77 -2.96 ... 
     $ O.firstquartil : num -20 -24.25 -5.42 -13.74 -4.45 ... 
     $ O.thirdquartil : num -3.29 -6.78 -1.3 -0.19 -2.2 0 5 -1.92 0.22 5.08 ... 
+0

データの実際の例を追加してください。 – LAP

+0

ありがとうございます - @ saurabh – kris

答えて

0

は、なぜあなたは自分の式を反転ませんか?正規化は、正規化する前に、元のデータに参照のうえy

(x - min(x, na.rm=TRUE))/(max(x,na.rm=TRUE) - min(x, na.rm=TRUE)) 

使用の非正規化のための

(x * (max(y, na.rm=TRUE) - min(y, na.rm=TRUE)) + min(y, na.rm=TRUE)) 

を使用した場合。

の作業例:

test <- list(c(1,5,6,7,10), c(2,4,6,6,12)) 
> test 
[[1]] 
[1] 1 5 6 7 10 

[[2]] 
[1] 2 4 6 6 12 

testnorm <- lapply(test, function(x) (x-min(x))/(max(x)-min(x))) 
> testnorm 
[[1]] 
[1] 0.0000000 0.4444444 0.5555556 0.6666667 1.0000000 

[[2]] 
[1] 0.0 0.2 0.4 0.4 1.0 

testdenorm <- mapply(function(x, y) (x*(max(y)-min(y)))+min(y), testnorm, test) 
> testdenorm 
    [,1] [,2] 
[1,] 1 2 
[2,] 5 4 
[3,] 6 6 
[4,] 7 6 
[5,] 10 12 

があなたの元のデータのmin()max() - 値を使用していることを確認してください。もしあなたがそれらを持っていなければ、私はあなたが運がなくなってしまうのではないかと思います。

+0

私はそれを試してみましたが、私は正規化したものと同じです – kris

+0

私は例を挙げました。 – LAP

+0

時間と努力のために働いてくれてありがとう。 – kris

関連する問題