Python中ARIMA预测报错:too many values to unpack (expected 3)求助
解决ARIMA forecast解包报错问题
错误原因
在新版本的statsmodels(>=0.13.0)中,fitted.forecast()方法不再返回(fc, se, conf)三个独立值,而是返回一个包含预测值的Series对象。用三个变量去解包这个单一对象,就会触发ValueError: too many values to unpack (expected 3)。
修正方案
使用get_forecast()方法替代forecast(),该方法返回的ForecastResults对象可直接提取预测值、标准误和置信区间:
import statsmodels.api as smapi import pandas as pd # 模型训练部分保持不变 model = smapi.tsa.arima.ARIMA(train_data, order=(1,1,0)) fitted = model.fit() print(test_data.shape) # 替换原forecast调用 forecast = fitted.get_forecast(638, alpha=0.05) fc = forecast.predicted_mean se = forecast.se_mean conf = forecast.conf_int() # 后续代码无需修改 fc_series = pd.Series(fc, index=test_data.index) lower_series = pd.Series(conf[:, 0], index=test_data.index) upper_series = pd.Series(conf[:, 1], index=test_data.index)
补充说明
如果需要更精细的预测区间控制,也可以用get_prediction()方法指定预测的起始和结束位置(对应训练集结束后到测试集末尾的区间):
# 从训练集结束位置开始,预测638个值 pred = fitted.get_prediction(start=len(train_data), end=len(train_data)+637, alpha=0.05) fc = pred.predicted_mean conf = pred.conf_int()
内容的提问来源于stack exchange,提问作者Aayush Kaushal
相关产品推荐
相关产品推荐

