Урок 6: Будущие регрессоры

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

import pandas as pd

# Загрузка набора данных для учебного пособия 4 с дополнительным столбцом температуры
df = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial04.csv")
df.head()
dsytemperature

0

2015-01-01

64.92

277.00

1

2015-01-02

58.46

277.95

2

2015-01-03

63.35

278.83

3

2015-01-04

50.54

279.64

4

2015-01-05

64.89

279.05

fig = df.plot(x="ds", y=["y", "temperature"], figsize=(10, 6))
from neuralprophet import NeuralProphet, set_log_level

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

# Модель и прогнозирование
m = NeuralProphet(
    n_changepoints=10,
    yearly_seasonality=True,
    weekly_seasonality=True,
    daily_seasonality=True,
    n_lags=10,
)
m.set_plotting_backend("plotly-static")

# Добавление нового будущего регрессора
m.add_future_regressor("temperature")

# Продолжение обучения модели и создание прогноза
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)
m.plot_components(forecast, components=["future_regressors"])
m.plot_parameters(components=["future_regressors"])
MAERMSELossRegLossepoch

0

67.432861

79.714500

0.789800

0.0

0

1

40.313995

49.790257

0.434656

0.0

1

2

23.730885

29.712715

0.221153

0.0

2

3

13.360303

17.117233

0.094893

0.0

3

4

10.110947

13.336704

0.061117

0.0

4

...

...

...

...

...

...

95

4.837646

6.482005

0.016463

0.0

95

96

4.830614

6.461479

0.016331

0.0

96

97

4.829221

6.457165

0.016324

0.0

97

98

4.823629

6.465248

0.016352

0.0

98

99

4.838150

6.507308

0.016487

0.0

99

100 rows × 5 columns

df_residuals = pd.DataFrame({"ds": df["ds"], "residuals": df["y"] - forecast["yhat1"]})
fig = df_residuals.plot(x="ds", y="residuals", figsize=(10, 6))

Last updated