По умолчанию модели NeuralProphet учитывают годовую, недельную и дневную сезонность, которые остаются неизменными на протяжении всех временных отметок. С помощью условной сезонности мы позволяем модели адаптировать сезонность к определенным частям набора данных.
if"google.colab"instr(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 pdfrom neuralprophet import NeuralProphet, set_log_level, df_utilsset_log_level("ERROR")
Например, мы можем определить две сезонные периодичности: одна для сезона футбола и одна для межсезонья. Сезон футбола начинается в сентябре и заканчивается после января. Мы учитываем это, добавляя в входной DataFrame два столбца с бинарными значениями (0 и 1), в зависимости от того, активировано ли условие в данный момент времени или нет. Заметьте, что также могут быть добавлены значения с плавающей точкой от 0 до 1 для моделирования более мягкого перехода.
При определении альтернативных недельных сезонностей мы отключаем стандартную сезонность модели.
period=7 означает добавление новой недельной сезонности. С помощью параметра condition_name= мы указываем, к какому условию будет приспособлена добавленная сезонность.
На графике отображены две недавно добавленные недельные сезонности. В сезон наблюдается повышенная активность в выходные дни, в то время как в будни игры не проводятся. Вне сезона увеличения активности в выходные дни не наблюдается.
m.plot_parameters(components="seasonality")
Предопределенная условная сезонность
NeuralProphet также предоставляет предопределенные условия (четверти, будни/выходные), которые добавляются в входной DataFrame с помощью простого вызова функции. В данном случае мы хотели бы интегрировать изменяющуюся по кварталам недельную сезонность.