Урок 7: События и праздники
В NeuralProphet существует два способа добавления специальных событий: через пользовательские события и через предопределенные праздники страны. Оба метода могут использоваться для моделирования особых случаев и событий, которые не учитываются другими компонентами. Эти специальные события могут помочь улучшить эффективность модели и ее интерпретируемость.
Сначала мы рассмотрим государственные праздники, а позже исследуем индивидуальные события.
import pandas as pd
from neuralprophet import NeuralProphet, set_log_level
# Загрузка набора данных для учебного пособия 4 с дополнительным столбцом температуры
df = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial01.csv")
df.head()
# Отключение сообщений журнала, кроме случаев ошибок
set_log_level("ERROR")
# Модель по умолчанию
m = NeuralProphet()
m.set_plotting_backend("plotly-static")
# Продолжение обучения модели и создание прогноза
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)
NeuralProphet поддерживает широкий спектр стран и регионов. Полный список доступен в документации pyholidays, которая используется внутри для поддержки национальных праздников стран.
Страновые праздники можно легко добавить с функцией add_country_holidays
m = NeuralProphet()
m.set_plotting_backend("plotly-static")
m = m.add_country_holidays("US")
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)
Эффекты от особых событий или праздников могут возникать спорадически. Такие события моделируются аналогично будущим регрессорам, при этом каждое событие e представляется как бинарная переменная e ∈ [0, 1], указывающая, происходит ли данное событие в конкретный день или нет.
Пользовательские события
Пользовательские события очень похожи на государственные праздники, но могут использоваться для моделирования любого особого события. Единственное отличие заключается в том, что имя события и соответствующие даты должны быть указаны пользователем. Более того, пользователь должен либо включить события в обучающие данные, либо подготовить набор данных соответствующим образом. В следующем примере мы рассмотрим последний вариант, чтобы проиллюстрировать, как должен выглядеть набор данных для пользовательских событий.
# https://eswd.eu/cgi-bin/eswd.cgi
df_events = pd.DataFrame(
{
"event": "extreme_weather",
"ds": pd.to_datetime(
[
"2018-11-23",
"2018-11-17",
"2018-10-28",
"2018-10-18",
"2018-10-14",
]
),
}
)
m = NeuralProphet()
m.set_plotting_backend("plotly-static")
m.add_events("extreme_weather")
df_all = m.create_df_with_events(df, df_events)
metrics = m.fit(df_all)
forecast = m.predict(df_all)
m.plot(forecast)
m.plot_components(forecast)
m.plot_parameters()
Last updated