Инструкция по началу работы

На этой странице содержится подробная информация о том, как построить простую модель с помощью NeuralProphet с минимальными функциями.

Установка

NeuralProphet можно установить с помощью pip:

$ pip install neuralprophet

Если вы планируете использовать пакет в блокноте Jupyter, мы рекомендуем установить «живую» версию. Это позволит вам включить pogress='plot' в функции поезда, чтобы получить живой график потерь поезда (и проверки):

$ pip install neuralprophet[live]

Для получения самой актуальной версии вы можете клонировать её напрямую сGitHub <https://github.com/ourownstory/neural_prophet>_:

$ git clone https://github.com/ourownstory/neural_prophet.git
$ cd neural_prophet
$ pip install .

Если вы планируете использовать NeuralProphet в Google Colab, используйте следующие команды, чтобы избежать конфликтов с предустановленными пакетами в Colab:

!pip uninstall -y torch notebook notebook_shim tensorflow tensorflow-datasets prophet torchaudio torchdata torchtext torchvision

!pip install neuralprophet
or
!pip install git+https://github.com/ourownstory/neural_prophet.git

Импорт

Теперь вы можете использовать NeuralProphet в своем коде:

from neuralprophet import NeuralProphet

Входные данные

Формат входных данных, ожидаемый пакетом neural_prophet, такой же, как в оригинальном prophet. Он должен содержать две колонки: ds, которая содержит временные метки, и колонку y, которая содержит наблюдаемые значения временного ряда. В этой документации мы будем использовать данные временного ряда о логарифме ежедневных просмотров страницы Пейтона Мэннинга в Википедии. Данные можно импортировать следующим образом.

import pandas as pd

data_location = "https://raw.githubusercontent.com/ourownstory/neuralprophet-data/main/datasets/"

df = pd.read_csv(data_location + "wp_log_peyton_manning.csv")
df.head()
ds
y

0

2007-12-10

9.5908

1

2007-12-11

8.5196

2

2007-12-12

8.1837

3

2007-12-13

8.0725

4

2007-12-14

7.8936

Первая модель

Для простой модели с использованием neural_prophet можно подобрать объект класса NeuralProphet следующим образом и вызвать функцию fit. Это позволяет подобрать модель с настройками по умолчанию. Обратите внимание, что частота данных устанавливается глобально. Допустимые настройки частоты временных рядов - псевдонимы смещения временных рядов pandas

m = NeuralProphet()
m.set_plotting_backend("plotly-static")  # show plots correctly in jupyter notebooks
metrics = m.fit(df)
WARNING - (NP.forecaster.fit) - When Global modeling with local normalization, metrics are displayed in normalized scale.
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Dataframe freq automatically defined as D
INFO - (NP.config.init_data_params) - Setting normalization to global as only one dataframe provided for training.
INFO - (NP.utils.set_auto_seasonalities) - Disabling daily seasonality. Run NeuralProphet with daily_seasonality=True to override this.
INFO - (NP.config.set_auto_batch_epoch) - Auto-set batch_size to 32
INFO - (NP.config.set_auto_batch_epoch) - Auto-set epochs to 141
WARNING - (NP.config.set_lr_finder_args) - Learning rate finder: The number of batches (93) is too small than the required number for the learning rate finder (237). The results might not be optimal.

После того как модель обучена, мы можем использовать её для предсказаний на основе обученной модели. Здесь мы прогнозируем внутри выборки по нашим данным для оценки соответствия модели. То же самое мы могли бы сделать и для контрольной выборки.

predicted = m.predict(df)
forecast = m.predict(df)
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Defined frequency is equal to major frequency - D
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Defined frequency is equal to major frequency - D
INFO - (NP.df_utils.return_df_in_original_format) - Returning df with no ID column
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Defined frequency is equal to major frequency - D
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Defined frequency is equal to major frequency - D
INFO - (NP.df_utils.return_df_in_original_format) - Returning df with no ID column

Визуализация

На основе полученных прогнозов вы можете визуализировать их.

Это простая модель с трендом, недельной сезонностью и годовой сезонностью, оцененная по умолчанию. Вы также можете посмотреть на отдельные компоненты по отдельности, как показано ниже.

m.plot_components(forecast)

Значения отдельных коэффициентов также могут быть представлены в виде графика ниже для получения более глубоких инсайтов.

Улучшенная модель

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

В этой модели мы добавляем авторегрессионные термины и учитываем неопределенность. Количество терминов можно определить с помощью аргумента n_lags. Интервалы неопределенности можно добавить, установив аргументquantiles

m = NeuralProphet(n_lags=10, quantiles=[0.05, 0.95])
m.set_plotting_backend("plotly-static")
metrics = m.fit(df)
forecast = m.predict(df)
WARNING - (NP.forecaster.fit) - When Global modeling with local normalization, metrics are displayed in normalized scale.
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Dataframe freq automatically defined as D
INFO - (NP.config.init_data_params) - Setting normalization to global as only one dataframe provided for training.
INFO - (NP.utils.set_auto_seasonalities) - Disabling daily seasonality. Run NeuralProphet with daily_seasonality=True to override this.
INFO - (NP.config.set_auto_batch_epoch) - Auto-set batch_size to 32
INFO - (NP.config.set_auto_batch_epoch) - Auto-set epochs to 141
WARNING - (NP.config.set_lr_finder_args) - Learning rate finder: The number of batches (93) is too small than the required number for the learning rate finder (237). The results might not be optimal.
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Defined frequency is equal to major frequency - D
INFO - (NP.df_utils._infer_frequency) - Major frequency D corresponds to 99.966% of the data.
INFO - (NP.df_utils._infer_frequency) - Defined frequency is equal to major frequency - D
INFO - (NP.df_utils.return_df_in_original_format) - Returning df with no ID column

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

m.highlight_nth_step_ahead_of_each_forecast(1).plot(forecast)

Познакомьтесь с дополнительными функциями NeuralProphet в наших учебных руководствах и инструкциях.

Last updated