Быстрый старт предсказаний временных рядов с 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 можно начертить предсказания: