由于 'When an ARIMA is fit with an X array, it must also be provided one for predicting or updating observations.',ARIMA 预测失败
ARIMA prediction failing due to 'When an ARIMA is fit with an X array, it must also be provided one for predicting or updating observations.'
我正在做一个经过训练的 autoarima 模型等。
我正处于需要使用模型做出一些预测的阶段
(该模型是使用 5 年的数据训练的,我需要预测下一年)。
初始数据集是一个简单的时间序列数据集;
Volume
01-01-1995 345
.
.
.
31-12-2000 4783
到目前为止的步数;
df_train = df[df.Date < "2019"]
df_test = df[df.Date >= "2019"]
exogenous_features = ["Consumption_mean_lag30", "Consumption_std_lag30",
"Consumption_mean_lag182", "Consumption_std_lag182",
"Consumption_mean_lag365", "Consumption_std_lag365",
"month", "week", "day", "day_of_week"]
model = auto_arima(df_train['Volume'], exogenous=df_train[exogenous_features], trace=True, error_action="ignore", suppress_warnings=True)
model.fit(df_train['Volume'], exogenous=df_train[exogenous_features])
forecast = model.predict(n_periods=len(df_test), exogenous=df_test[exogenous_features])
df_test["Forecast_ARIMAX"] = forecast
df_test[["Consumption", "Forecast_ARIMAX"]].plot(figsize=(14, 7))
from sklearn.metrics import mean_absolute_error, mean_squared_error
print("RMSE of Auto ARIMAX:", np.sqrt(mean_squared_error(df_test.Consumption, df_test.Forecast_ARIMAX)))
print("\nMAE of Auto ARIMAX:", mean_absolute_error(df_test.Consumption, df_test.Forecast_ARIMAX))
以上给了我满意的模型
当我尝试使用以下内容进行预测时;
model.predict(n_periods=365)
我一直收到错误消息;
ValueError: When an ARIMA is fit with an X array, it must also be provided one for predicting or updating observations.
我已尝试解决所有问题,但似乎无法理解如何提供 'X array' 或错误告诉我什么?
如果有人有任何见解或可以提供帮助,我将不胜感激。
谢谢。
您使用外源数据训练了您的模型,因此您拥有时间序列和其他数据。当您进行预测时,您必须为您尝试预测的时间范围提供额外的外生数据。
这是通过提供外生数据生成预测的正确方法:
forecast = model.predict(n_periods=len(df_test), exogenous=df_test[exogenous_features])
此处您缺少外源数据,因此出现错误(X 数组应包含您的 exogenous_features):
model.predict(n_periods=365)
外生数据的关键在于它可能会显着改善您的模型,但您需要提前了解这些数据才能做出预测。
我正在做一个经过训练的 autoarima 模型等。 我正处于需要使用模型做出一些预测的阶段 (该模型是使用 5 年的数据训练的,我需要预测下一年)。
初始数据集是一个简单的时间序列数据集;
Volume
01-01-1995 345
.
.
.
31-12-2000 4783
到目前为止的步数;
df_train = df[df.Date < "2019"]
df_test = df[df.Date >= "2019"]
exogenous_features = ["Consumption_mean_lag30", "Consumption_std_lag30",
"Consumption_mean_lag182", "Consumption_std_lag182",
"Consumption_mean_lag365", "Consumption_std_lag365",
"month", "week", "day", "day_of_week"]
model = auto_arima(df_train['Volume'], exogenous=df_train[exogenous_features], trace=True, error_action="ignore", suppress_warnings=True)
model.fit(df_train['Volume'], exogenous=df_train[exogenous_features])
forecast = model.predict(n_periods=len(df_test), exogenous=df_test[exogenous_features])
df_test["Forecast_ARIMAX"] = forecast
df_test[["Consumption", "Forecast_ARIMAX"]].plot(figsize=(14, 7))
from sklearn.metrics import mean_absolute_error, mean_squared_error
print("RMSE of Auto ARIMAX:", np.sqrt(mean_squared_error(df_test.Consumption, df_test.Forecast_ARIMAX)))
print("\nMAE of Auto ARIMAX:", mean_absolute_error(df_test.Consumption, df_test.Forecast_ARIMAX))
以上给了我满意的模型
当我尝试使用以下内容进行预测时;
model.predict(n_periods=365)
我一直收到错误消息;
ValueError: When an ARIMA is fit with an X array, it must also be provided one for predicting or updating observations.
我已尝试解决所有问题,但似乎无法理解如何提供 'X array' 或错误告诉我什么?
如果有人有任何见解或可以提供帮助,我将不胜感激。
谢谢。
您使用外源数据训练了您的模型,因此您拥有时间序列和其他数据。当您进行预测时,您必须为您尝试预测的时间范围提供额外的外生数据。
这是通过提供外生数据生成预测的正确方法:
forecast = model.predict(n_periods=len(df_test), exogenous=df_test[exogenous_features])
此处您缺少外源数据,因此出现错误(X 数组应包含您的 exogenous_features):
model.predict(n_periods=365)
外生数据的关键在于它可能会显着改善您的模型,但您需要提前了解这些数据才能做出预测。