По умолчанию модели NeuralProphet учитывают годовую, недельную и дневную сезонность, которые остаются неизменными на протяжении всех временных отметок. С помощью условной сезонности мы позволяем модели адаптировать сезонность к определенным частям набора данных.
if "google.colab" in str(get_ipython()):
# Удаляем предустановленные пакеты из Colab, чтобы избежать конфликтов
!pip uninstall -y torch notebook notebook_shim tensorflow tensorflow-datasets prophet torchaudio torchdata torchtext torchvision
!pip install git+https://github.com/ourownstory/neural_prophet.git@examples_cond_seas # может занять некоторое время
#!pip install neuralprophet # намного быстрее, но может не иметь последних обновлений/исправлений ошибок
import pandas as pd
from neuralprophet import NeuralProphet, set_log_level, df_utils
set_log_level("ERROR")
Например, мы можем определить две сезонные периодичности: одна для сезона футбола и одна для межсезонья. Сезон футбола начинается в сентябре и заканчивается после января. Мы учитываем это, добавляя в входной DataFrame два столбца с бинарными значениями (0 и 1), в зависимости от того, активировано ли условие в данный момент времени или нет. Заметьте, что также могут быть добавлены значения с плавающей точкой от 0 до 1 для моделирования более мягкого перехода.
При определении альтернативных недельных сезонностей мы отключаем стандартную сезонность модели.
df["ds"] = pd.to_datetime(df["ds"])
df["on_season"] = df["ds"].apply(lambda x: x.month in [9, 10, 11, 12, 1])
df["off_season"] = df["ds"].apply(lambda x: x.month not in [9, 10, 11, 12, 1])
period=7 означает добавление новой недельной сезонности. С помощью параметра condition_name= мы указываем, к какому условию будет приспособлена добавленная сезонность.
На графике отображены две недавно добавленные недельные сезонности. В сезон наблюдается повышенная активность в выходные дни, в то время как в будни игры не проводятся. Вне сезона увеличения активности в выходные дни не наблюдается.
m.plot_parameters(components="seasonality")
Предопределенная условная сезонность
NeuralProphet также предоставляет предопределенные условия (четверти, будни/выходные), которые добавляются в входной DataFrame с помощью простого вызова функции. В данном случае мы хотели бы интегрировать изменяющуюся по кварталам недельную сезонность.