SARIMAX 模型的打印结果有问题
Having issues printing results from SARIMAX model
我建立了一个 SARIMA 模型来预测特定产品的库存需求。我能够将时间序列可视化为完美的结果输出,但是当尝试直接打印结果(实际数字,而不是图形)时,代码运行但不提供值的打印。
我已经尝试对此进行研究,但我似乎只能在网上找到时间序列可视化的示例,我已经有了。
.get_prediction 和 get_forecast 我都试过了。
my_order = (2, 1, 0)
my_seasonal_order = (3, 1, 0, 7)
bananas_model = SARIMAX(bananas_mfc_log, order=my_order, seasonal_order=my_seasonal_order, alpha=0.05, freq='D')
results = bananas_model.fit()
pred = results.get_prediction(start=pd.to_datetime('2019-07-01'), dynamic=False)
pred_ci = pred.conf_int()
ax = bananas_mfc_log.apply(np.exp).plot(label='observed')
pred.predicted_mean.apply(np.exp).plot(ax=ax, label='forecasted', alpha=.7, figsize=(14, 7))
ax.set_xlabel('Date')
ax.set_ylabel('Quantity Picked')
plt.ylim(-1000, 1500)
plt.legend()
plt.show()
pred2 = results.get_forecast(steps=15)
print(pred2)
上面的打印尝试提供了这个:
<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper object at 0x000002100EC02D30>
pred2 = results.get_prediction(start=pd.to_datetime('2019-07-26'), end=pd.to_datetime('2019-08-09'), dynamic=False)
print(pred2)
第二次尝试打印结果结果如下:
<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper object at 0x000002100059D710>
我想打印一个数据框或一组预测结果。
例如:
date bananas
2019-07-26 57
2019-07-27 178
2019-07-28 198
2019-07-29 72
2019-07-30 54
2019-07-31 87
在等待回复的过程中,我尝试了以下操作,结果成功了:
pred2 = []
pred2 = results.get_prediction(start=pd.to_datetime('2019-07-01'), end=pd.to_datetime('2019-07-31'), dynamic=False)
pred2 = pred2.predicted_mean.apply(np.exp)
print(pred2)
apply(np.exp) 只需要从为模型完成的对数转换进行反向转换。
这是结果格式的预览:
2019-07-26 215.606736
2019-07-27 353.112927
2019-07-28 72.164655
2019-07-29 318.258192
2019-07-30 10.354032
2019-07-31 301.233365
Freq: D, dtype: float64
虽然这个 post 是短暂的,但我会把它留在这里,以防它能帮助其他也在学习的人。
我建立了一个 SARIMA 模型来预测特定产品的库存需求。我能够将时间序列可视化为完美的结果输出,但是当尝试直接打印结果(实际数字,而不是图形)时,代码运行但不提供值的打印。
我已经尝试对此进行研究,但我似乎只能在网上找到时间序列可视化的示例,我已经有了。 .get_prediction 和 get_forecast 我都试过了。
my_order = (2, 1, 0)
my_seasonal_order = (3, 1, 0, 7)
bananas_model = SARIMAX(bananas_mfc_log, order=my_order, seasonal_order=my_seasonal_order, alpha=0.05, freq='D')
results = bananas_model.fit()
pred = results.get_prediction(start=pd.to_datetime('2019-07-01'), dynamic=False)
pred_ci = pred.conf_int()
ax = bananas_mfc_log.apply(np.exp).plot(label='observed')
pred.predicted_mean.apply(np.exp).plot(ax=ax, label='forecasted', alpha=.7, figsize=(14, 7))
ax.set_xlabel('Date')
ax.set_ylabel('Quantity Picked')
plt.ylim(-1000, 1500)
plt.legend()
plt.show()
pred2 = results.get_forecast(steps=15)
print(pred2)
上面的打印尝试提供了这个:
<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper object at 0x000002100EC02D30>
pred2 = results.get_prediction(start=pd.to_datetime('2019-07-26'), end=pd.to_datetime('2019-08-09'), dynamic=False)
print(pred2)
第二次尝试打印结果结果如下:
<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper object at 0x000002100059D710>
我想打印一个数据框或一组预测结果。 例如:
date bananas
2019-07-26 57
2019-07-27 178
2019-07-28 198
2019-07-29 72
2019-07-30 54
2019-07-31 87
在等待回复的过程中,我尝试了以下操作,结果成功了:
pred2 = []
pred2 = results.get_prediction(start=pd.to_datetime('2019-07-01'), end=pd.to_datetime('2019-07-31'), dynamic=False)
pred2 = pred2.predicted_mean.apply(np.exp)
print(pred2)
apply(np.exp) 只需要从为模型完成的对数转换进行反向转换。 这是结果格式的预览:
2019-07-26 215.606736
2019-07-27 353.112927
2019-07-28 72.164655
2019-07-29 318.258192
2019-07-30 10.354032
2019-07-31 301.233365
Freq: D, dtype: float64
虽然这个 post 是短暂的,但我会把它留在这里,以防它能帮助其他也在学习的人。