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
параметров.Каков наилучший способ получить эти параметры?Я мог бы, возможно, методом проб и ошибок, но было бы хорошо получить представление о стандартной / нестандартной процедуре получения наилучшего соответствия.
Любая помощь будет высоко ценится.
Источники: