Это правильный способ нормализации данных в моделях ETS с использованием python? Пожалуйста, предложите - PullRequest
0 голосов
/ 07 января 2020

Пожалуйста, предложите приведенный ниже подход в нормализации данных с использованием Scikit Learn Minmax Scaler может привести к утечке данных при моделировании ETS.

фрагменты кода.

#train & test split by sales
df.set_index("sales",inplace=True)
train=df[:'2008']
test=df['2009']


#reshape train set
tr=train["sales"].values
tr= tr.reshape((len(tr), 1))

#reshape test set
ts=test["sales"].values
ts= ts.reshape((len(ts), 1))

#fit & transform train set
scaler = MinMaxScaler(feature_range=(0, 1))
scaler = scaler.fit(tr)
transformed_tr = scaler.transform(tr)

#fit & transform test set
scaler = MinMaxScaler(feature_range=(0, 1))
scaler = scaler.fit(ts)
transformed_ts = scaler.transform(ts)

#fit ETS on transformed trian set
yhat = ExponentialSmoothing(transformed_tr ,seasonal_periods=6 ,trend='add', seasonal='add',).fit()

#forecast on transformed test set
yhat1=yhat.forecast(len(transformed_ts))
yhat1=yhat1.reshape(len(yhat1),1)

#convert original values
inverse=scaler.inverse_transform(yhat1)

У меня есть изменил мой код, чтобы избежать возможной утечки данных, пожалуйста, предложите, если что-то не так в новом подходе

#fit & transform train set
scaler = MinMaxScaler(feature_range=(0, 1))
transformed_tr = scaler.fit_transform(tr) # fit transform on training set
transformed_ts = scaler.transform(ts) # use scaler to standardise test set,as oppose to fitting again or re-initializing scaler.
#fit ETS on transformed trian set
yhat = ExponentialSmoothing(transformed_tr ,seasonal_periods=6 ,trend='add', seasonal='add',).fit()
#forecast on transformed test set
yhat1=yhat.forecast(len(transformed_ts))
yhat1=yhat1.reshape(len(yhat1),1)
#convert original values with same scalar that was initially used
inverse=scaler.inverse_transform(yhat1) 

...