Я пытаюсь создать в Python функцию скользящих окон, чтобы протестировать мои модели временных рядов SARIMAX и Holt-Winters на более длительной продолжительности. Я прогнозирую день вперед LMP на почасовой основе. Хотя я могу запускать модели вручную в течение одного дня, но когда я пытаюсь проверить их надежность в течение более длительного периода времени, я получаю следующие ошибки:
Holt-Winters
def rolling_windows_evaluation(x):
X_train, X_test = emild_ts[3816:4344], emild_ts[4344:4368]
MAPE = []
t = 4368
for t in range(4368,5088):
# fit model
model = HoltWinters(X_train, slen = 24,
alpha = alpha_final,
beta = beta_final,
gamma = gamma_final,
n_preds = 24, scaling_factor = 3)
model.triple_exponential_smoothing()
MAPE_score = mean_absolute_percentage_error(X_test.LMP,model.result[-24:])
MAPE.append(MAPE_score)
X_train = X_train.iloc[24:]
X_train = X_train.append(X_test)
X_test = X_test.append(emild_ts[t:t+24])
X_test = X_test.iloc[24:]
return(MAPE)
return(np.mean(np.array(MAPE)))
вызов функции :
emlid_ts_val = emild_ts[3816:5088]
mape, mape_avg = rolling_windows_evaluation(emlid_ts_val)
ошибка :
неподдерживаемые типы операндов для +: 'int' и 'str'
SARIMAX :
def rolling_windows_evaluation(x):
X_train, X_test = emild_ts[3816:4344], emild_ts[4344:4368]
MAPE = []
t = 4368
for t in range(4368,5088):
# fit model
model = sm.tsa.statespace.SARIMAX(X_train.LMP, order=(1,1,2),
seasonal_order=(1, 1, 1, 24)).fit(disp=-1)
forecast_24 = model.predict(start = X_train.shape[0], end = X_train.shape[0]+24)
MAPE_score = mean_absolute_percentage_error(X_test.LMP,forecast_24)
MAPE.append(MAPE_score)
X_train = X_train.iloc[24:]
X_train = X_train.append(X_test)
X_test = X_test.append(emild_ts[t:t+24])
X_test = X_test.iloc[24:]
return(MAPE)
return(np.mean(np.array(MAPE)))
вызов функции :
emlid_ts_val = emild_ts[3816:5088]
mape, mape_avg = rolling_windows_evaluation(emlid_ts_val)
ошибка
неподдерживаемые типы операндов для *: 'int' и 'NoneType'
Эти две модели уже были обучены и оценены. Я предполагаю, что ошибки в основном связаны с индексацией. Любая помощь для отладки ошибок будет принята с благодарностью.