我正在尝试在python中构建滚动窗口函数,以在更长的时间内测试我的 SARIMAX 和Holt-Winters时间序列模型。我正在按小时预测LMP的前一天。虽然,我可以手动运行一天的模型,但是当我尝试滚动式地测试它们在较长时间段内的鲁棒性时,出现以下错误:
冬至:
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”
这两个模型已经过训练和评估。我假设错误主要与索引有关。对于调试错误的任何帮助将不胜感激。