2017-07-26 8 views
1

線形回帰のフィーチャスケーリングに関する一般的な質問があります。フィーチャスケーリングを使用した線形回帰

私は2年間のデータ量のデータセットを持っています。特定の列の最初の1年間のデータは、2年目のデータとはまったく異なります。私は、第1年の変数と第2年の計算に関連する属性が異なるかもしれないと仮定しています。

とにかく、データセットの外観は次のとおりです。私はこのデータセットを予測したい場合は、明らかに否定的で結果を予測しようとしているが、現実には、データはいくつかの方法で再スケーリングされた、

Date    Col1 
2015-01-01  1500 
2015-01-02  1432 
2015-01-03  1234 
2015-01-04  1324 
2015-01-05  1532 
2015-01-06  1424 
. 
. 
. 
2016-01-01   35 
2016-01-02   31 
2016-01-03   29 
2016-01-04   19 
2016-01-05   22 
2016-01-06   32 

:私は毎年の最初の6行を表示します。

フィーチャスケーリングを適用すると、元のデータセットに戻って予測を行うにはどうすればよいですか?

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

scaled_data <- 
    df %>% 
    group_by(Date %>% 
    mutate(NORMALIZED = normalize(Col1)) 
+2

あなたが最小値と最大値を保存する必要があります結果を元のスケールに戻すことができます。 – ekstroem

+0

答えは次になるでしょう: '予測された元のスケーリングされた数値=予測されたフィーチャ=スケーリングされた数値*(Max_Original - Min_Original)+ Min_Original'? –

+1

それはまさにそれです – ekstroem

答えて

2

です。あなた自身で答えを出しても、それを関数に入れることもできます。

この1つは予測値と元のベクトル

backtransform <- function(value, x) { value * (max(x) - min(x)) + min(x) } 

場合や、計算を与えられ、最小値と最大値を保つ必要があり、その後

backtransform2 <- function(value, min, max) { value * (max - min) + min }