Python / Pandas - Как настроить параметры модели auto_arima для получения прогноза на будущее - PullRequest
0 голосов
/ 30 ноября 2018

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()

Результат enter image description here

Как вы видите, предсказание далеко, и я предполагаю, что проблема не в использовании правильных auto_arima параметров.Каков наилучший способ получить эти параметры?Я мог бы, возможно, методом проб и ошибок, но было бы хорошо получить представление о стандартной / нестандартной процедуре получения наилучшего соответствия.

Любая помощь будет высоко ценится.

Источники:

1 Ответ

0 голосов
/ 30 ноября 2018

У вас структурный разрыв около августа 2018 года, но вы тренируетесь только до июля 2018 года. ARIMA (или любой другой метод одномерного временного ряда) никогда не сможет предсказать этот структурный разрыв.Вам придется расширить набор данных для обучения, включив в него значения с августа по сентябрь 2018 года.

См. первый раздел этого блога , чтобы лучше понять, почему это происходит.

...