Bemind
NeuralProphet
NeuralProphet
  • NeuralProphet 1.0.0rc8 документация
  • Инструкция по началу работы
  • Новые уроки
    • Урок 1: Основы
    • Урок 2: Тренды
    • Урок 3: Сезонность
    • Урок 4: Авторегрессия
    • Урок 5: Регрессоры с запаздыванием
    • Урок 6: Будущие регрессоры
    • Урок 7: События и праздники
    • Урок 8: Неопределенность
    • Урок 9: Глобальная модель
    • Урок 10: Валидация и воспроизводимость
    • Следующие шаги
  • Руководства по функциям
    • Коллекция предсказаний
    • Тестирование и кросс-валидация
    • Визуализация прогнозов NeuralProphet
    • Глобальное локальное моделирование
    • Количественная оценка неопределенности
    • Условная сезонность
    • Мультипликативная Сезонность
    • Разреженная авторегрессия
    • Субдневные данные
    • Выбор гиперпараметров
    • Интеграция MLflow
    • Прямая визуализация во время обучения
    • Визуализация архитектуры сети
    • Прогнозирование потребности в энергии: Прогноз нагрузки для больницы в Сан-Франциско
    • Возобновляемая Энергия: Прогнозирование Солнечной Энергии
    • Прогнозирование нагрузки на энергосистему с визуализацией
  • Code Documentation
    • NeuralProphet Class
Powered by GitBook
On this page
  • Валидация(проверка)
  • Воспроизводимость
  1. Новые уроки

Урок 10: Валидация и воспроизводимость

Валидация(проверка)

import pandas as pd
from neuralprophet import NeuralProphet, set_log_level

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

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

# Модель и прогнозирование
m = NeuralProphet()
m.set_plotting_backend("plotly-static")

Разбейте наш набор данных на обучающую и проверочную выборки. Мы будем использовать проверочную выборку для проверки эффективности нашей модели. Размер проверочной выборки составляет 20% от всего нашего набора данных. Настройте размер с помощью параметра valid_p в функции

df_train, df_val = m.split_df(df, valid_p=0.2)

print("Dataset size:", len(df))
print("Train dataset size:", len(df_train))
print("Validation dataset size:", len(df_val))
Dataset size: 1462
Train dataset size: 1170
Validation dataset size: 292

Валидация выполняется путем передачи валидационного набора в метод fit во время обучения. Полученные метрики показывают производительность модели по сравнению с нашим валидационным набором.

metrics = m.fit(df_train, validation_df=df_val, progress=None)
metrics
MAE_val
RMSE_val
Loss_val
RegLoss_val
epoch
MAE
RMSE
Loss
RegLoss

0

151.067062

159.602341

2.067798

0.0

0

75.920654

89.007133

0.699122

0.0

1

147.524399

155.866516

2.007845

0.0

1

74.146973

86.745255

0.676098

0.0

2

143.015457

151.105865

1.931547

0.0

2

71.729416

84.111290

0.645402

0.0

3

137.148010

144.921494

1.832287

0.0

3

68.274185

80.496658

0.602091

0.0

4

129.434494

136.787064

1.701819

0.0

4

64.227638

75.879417

0.549886

0.0

...

...

...

...

...

...

...

...

...

...

180

7.111052

9.061026

0.011818

0.0

180

4.582942

6.183656

0.004233

0.0

181

7.106644

9.057316

0.011808

0.0

181

4.587008

6.228304

0.004246

0.0

182

7.100244

9.049046

0.011786

0.0

182

4.592853

6.206255

0.004245

0.0

183

7.102000

9.050427

0.011790

0.0

183

4.603105

6.197680

0.004274

0.0

184

7.101621

9.050205

0.011789

0.0

184

4.579907

6.184962

0.004225

0.0

185 rows × 9 columns

forecast = m.predict(df)
m.plot(forecast)

Для изучения продвинутых методов проверки и тестирования обратитесь к руководству Тестирование и кросс-валидация в разделе Как сделать.

Воспроизводимость

Вариабельность результатов заключается в том, что SGD находит разные оптимумы при разных запусках. Большая часть случайности происходит из-за случайной инициализации весов, различных скоростей обучения и разного перемешивания данных в дата-лоадере. Мы можем контролировать генератор случайных чисел, установив его начальное значение (seed):

from neuralprophet import set_random_seed

set_random_seed(0)

Чтобы получать идентичные результаты при каждом запуске модели, необходимо перед её обучением явно установить одно и то же случайное число в качестве начального значения генератора случайных чисел (random seed).

Last updated 1 year ago