Пожалуйста, предложите приведенный ниже подход в нормализации данных с использованием 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)