Python/Pandas - 如何调整 auto_arima 模型参数以获得未来预测

Posted

技术标签:

【中文标题】Python/Pandas - 如何调整 auto_arima 模型参数以获得未来预测【英文标题】:Python/Pandas - How to tune auto_arima model parameters to get future forecast 【发布时间】:2019-05-02 10:10:58 【问题描述】:

Python 3.6

我的数据集如下所示:

这是旅游预订,例如旅游公司。航空公司/火车/公共汽车等。

date           bookings
2017-01-01     438
2017-01-02     167
...
2017-12-31     45
2018-01-01     748
...
2018-11-29     223

我需要这样的东西(即数据集以外的预测数据):

date           bookings
2017-01-01     438
2017-01-02     167
...
2017-12-31     45
2018-01-01     748
...
2018-11-29     223
2018-11-30     98
...
2018-12-30     73
2018-12-31     100

代码:

import pyodbc
import pandas as pd
import cufflinks as cf
import plotly.plotly as ply
from pmdarima.arima import auto_arima

sql_conn = pyodbc.connect(# connection details here)
query = #sql query here
df = pd.read_sql(query, sql_conn, index_col='date')
df.index = pd.to_datetime(df.index)

stepwise_model = auto_arima(df, start_p=1, start_q=1,
                           max_p=3, max_q=3, m=7,
                           start_P=0, seasonal=True,
                           d=1, D=1, trace=True,
                           error_action='ignore',  
                           suppress_warnings=True, 
                           stepwise=True)
stepwise_model.aic()

train = df.loc['2017-01-01':'2018-06-30']
test = df.loc['2018-07-01':]

stepwise_model.fit(train)
future_forecast = stepwise_model.predict(n_periods=len(test))
future_forecast = pd.DataFrame(future_forecast,
                               index=test.index,
                               columns=['prediction'])
pd.concat([test, future_forecast], axis=1).iplot()

结果

正如您所看到的,预测还差得很远,我认为问题在于没有使用正确的auto_arima 参数。获取这些参数的最佳方法是什么?我也许可以反复试验,但最好了解标准/非标准程序以获得最佳拟合。

任何帮助将不胜感激。

来源:

https://medium.com/@josemarcialportilla/using-python-and-auto-arima-to-forecast-seasonal-time-series-90877adff03c https://github.com/Pierian-Data/AutoArima-Time-Series-Blog/blob/master/Forecasting%20a%20Time%20Series%20in%20Python.ipynb

【问题讨论】:

【参考方案1】:

您在 2018 年 8 月左右出现了结构性中断,但您只在 2018 年 7 月之前进行了训练。ARIMA(或与此相关的任何单变量时间序列方法)将永远无法预测该结构性中断。您必须扩展您的训练数据集以包含 2018 年 8 月和 9 月的值。

请参阅the first section of this blog post 以更好地了解发生这种情况的原因。

【讨论】:

以上是关于Python/Pandas - 如何调整 auto_arima 模型参数以获得未来预测的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 iOS 上的浏览​​器调整图像大小?

如何使TextBox填充所有可用空间而不稍后调整其内容?

自动调整 div 的大小

CSS:如何调整使用浮动属性和自动宽度和高度的两个 div 在底部对齐

python pandas如何过滤剔除数据?

Python,Pandas:tz_localize AmbiguousTimeError:无法用非 DST 日期推断 dst 时间