Быстрый старт предсказаний временных рядов с Facebook Prophet
Рассмотрим основы применения разработанной Facebook библиотеки для предсказаний временных данных - Prophet.
Для изучения вопроса построим датафрейм:
from fbprophet import Prophet
import numpy as np
import pandas as pd
days = pd.date_range(start='2019-01-01', end='2021-03-01', freq='D')
df = pd.DataFrame({'per':days,'data':np.arange(len(days))})
# приводим dataframe к нужному формату
df.columns = ['ds', 'y']
df.tail()Отметим, что для библиотеки важно, чтобы входом был датафрейм с двумя колонками ds и y. В первом хранятся даты формата YYYY-MM-DD или отметки времени - YYYY-MM-DD HH:MM:SS. В другом столбце хранятся численные значения предсказываемой метрики.
Использование модели следует канонам sklearn и предполагает создание экземпляра класса и вызова методов fit и predict. Важным нюансом является то, что предсказание осуществляется для объекта DataFrame, включающего будущие даты. Для его построения используется вспомогательный метод make_future_dataframe:
fit_df = df[df.ds<pd.Timestamp('2021-01-01', freq='D')]
model = Prophet(daily_seasonality=True)
model.fit(fit_df)
future = model.make_future_dataframe(periods=df.shape[0]-fit_df.shape[0])
forecast = model.predict(future)Обратите внимание на результаты, модель легко установила наши простые зависимости (приращение значения на единицу):
Используя метод plot можно начертить предсказания: