Визуализация прогнозов NeuralProphet

Этот блокнот демонстрирует, какие варианты построения графиков доступны в NeuralProphet.

NeuralProphet поддерживает использование нескольких бэкендов для визуализации, каждый из которых имеет свои преимущества и недостатки:

  • plotly: Интерактивные графики, но могут быть медленными для больших наборов данных и не отображаются в версии документации.

  • plotly-static: Статические графики для отображения в документации.

  • plotly-resampler: Интерактивные графики, которые работают быстрее с большими наборами данных, но могут некорректно отображаться в некоторых средах.

  • matplotlib: Статические графики, но скоро будут устаревшими.

Давайте начнем с той же модели, что и в учебниках.

import pandas as pd
from neuralprophet import NeuralProphet, set_log_level

# Отключение сообщений журнала, кроме случаев ошибок
set_log_level("ERROR")

# Загрузка набора данных из CSV-файла с помощью pandas
df = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial04.csv")

# Уменьшение набора данных до двух лет для более наглядного отображения
df = df.iloc[-365 * 2 :]

# Модель и прогнозирование
m = NeuralProphet(
    # Отключение точек изменения тренда
    n_changepoints=10,
    # Отключение компонентов сезонности
    yearly_seasonality=True,
    weekly_seasonality=True,
    daily_seasonality=True,
    n_lags=10,
)
m.add_lagged_regressor("temperature")

m.set_plotting_backend("plotly-static")

metrics = m.fit(df)
forecast = m.predict(df)

Постройте прогноз

Постройте прогноз модели и фактические данные.

m.plot(forecast)

Постройте компоненты

Чтобы визуализировать компоненты прогноза, такие как тренд, сезонность и праздники, вы можете использовать метод plot_parameters. Вы можете выбрать показ всех компонентов или только части с помощью components. Подробнее смотрите в официальной документации NeuralProphet.

m.plot_components(forecast)

Постройте параметры

Для лучшего понимания модели можно визуализировать параметры модели. Как и в случае с plot_components, вы можете выбрать визуализацию всех параметров или только некоторой их части.

m.plot_parameters()

Построение нескольких прогнозов

Neuralprophet может генерировать прогнозы на несколько шагов вперед, если указать параметр n_forecasts

# Модель и прогнозирование
m = NeuralProphet(
    # Отключение точек изменения тренда
    n_changepoints=10,
    # Отключение компонентов сезонности
    yearly_seasonality=True,
    weekly_seasonality=True,
    daily_seasonality=True,
    n_lags=10,
    n_forecasts=10,
)
m.add_lagged_regressor("temperature")

m.set_plotting_backend("plotly-static")

metrics = m.fit(df)
forecast = m.predict(df)

Если мы будем строить наш прогноз, как и раньше, все прогнозы на каждом шаге будут отображены. Однако мы также можем построить каждый прогноз на каждом шаге индивидуально.

m.plot(forecast, forecast_in_focus=4)

Тренд, сезонность и праздники одинаковы для всех прогнозов вперед, поэтому они отображаются только один раз. Но авторегрессия и запаздывающие регрессоры различаются для каждого шага прогнозирования. Если forecast_in_focus не указан, график компонент показывает долю компонента к каждому шагу прогноза разными цветами. Если указан forecast_in_focus, график компонент показывает долю компонента указанного шага прогноза.

# Показать только последние 20 дней для лучшего отображения компонентов
m.plot_components(forecast[-20:])

Поскольку параметры одинаковы для всех прогнозов на несколько шагов вперед, они отображаются только один раз.

m.plot_parameters()

Last updated