Урок 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
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