> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/neuralprophet/rukovodstva-po-funkciyam/prognozirovanie-potrebnosti-v-energii-prognoz-nagruzki-dlya-bolnicy-v-san-francisko.md).

# Прогнозирование потребности в энергии: Прогноз нагрузки для больницы в Сан-Франциско

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

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

```python
if "google.colab" in str(get_ipython()):
    # удалите предустановленные пакеты из Colab, чтобы избежать конфликтов
    !pip uninstall -y torch notebook notebook_shim tensorflow tensorflow-datasets prophet torchaudio torchdata torchtext torchvision
    !pip install git+https://github.com/ourownstory/neural_prophet.git # может занять некоторое время
    #!pip install neuralprophet # намного быстрее, но может не иметь последних обновлений/исправлений ошибок

import pandas as pd
from neuralprophet import NeuralProphet, set_log_level

set_log_level("ERROR")
```

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

sf_load_df = pd.read_csv(data_location + "energy/SF_hospital_load.csv")
sf_load_df.head(3)
```

|   | ds                  | y          |
| - | ------------------- | ---------- |
| 0 | 2015-01-01 01:00:00 | 778.007969 |
| 1 | 2015-01-01 02:00:00 | 776.241750 |
| 2 | 2015-01-01 03:00:00 | 779.357338 |

### Общий прогноз: только функции, основанные на времени.

В этом первом разделе мы будем обучать модель только с функциями времени, как если бы мы делали это с Facebook Prophet.

```python
m = NeuralProphet(
    weekly_seasonality=6,
    daily_seasonality=10,
    trend_reg=1,
    learning_rate=0.01,
)
df_train, df_test = m.split_df(sf_load_df, freq="H", valid_p=1.0 / 12)

metrics = m.fit(df_train, freq="H", validation_df=df_test, progress="bar")
```

```python
metrics.tail(1)
```

|     | MAE\_val  | RMSE\_val | Loss\_val | RegLoss\_val | epoch | MAE       | RMSE      | Loss     | RegLoss |
| --- | --------- | --------- | --------- | ------------ | ----- | --------- | --------- | -------- | ------- |
| 108 | 57.975113 | 80.128593 | 0.008979  | 0.0          | 108   | 46.005161 | 63.305355 | 0.004436 | 0.0     |

```python
forecast = m.predict(df_train)
m.set_plotting_backend("plotly-static")
m.plot(forecast)
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_7_1.svg" alt=""><figcaption></figcaption></figure>

```python
forecast = m.predict(df_test)
m = m.highlight_nth_step_ahead_of_each_forecast(1)
m.plot(forecast[-7 * 24 :])
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_8_1.svg" alt=""><figcaption></figcaption></figure>

```python
m.plot_parameters()
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_9_0.svg" alt=""><figcaption></figcaption></figure>

### Прогноз на 1 шаг вперед с авторегрессией

```python
m = NeuralProphet(
    growth="off",
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
    n_lags=3 * 24,
    ar_reg=1,
    learning_rate=0.01,
)
df_train, df_test = m.split_df(sf_load_df, freq="H", valid_p=1.0 / 12)

metrics = m.fit(df_train, freq="H", validation_df=df_test, progress="bar")
```

```python
metrics.tail(1)
```

|     | MAE\_val  | RMSE\_val | Loss\_val | RegLoss\_val | epoch | MAE       | RMSE      | Loss     | RegLoss  |
| --- | --------- | --------- | --------- | ------------ | ----- | --------- | --------- | -------- | -------- |
| 108 | 24.246571 | 37.293633 | 0.002822  | 0.000877     | 108   | 23.822706 | 35.911766 | 0.002339 | 0.000877 |

```python
forecast = m.predict(df_train)
m.set_plotting_backend("plotly-static")
m.plot(forecast)
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_13_1.svg" alt=""><figcaption></figcaption></figure>

```python
forecast = m.predict(df_test)
m = m.highlight_nth_step_ahead_of_each_forecast(1)
m.plot(forecast[-7 * 24 :])
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_14_1.svg" alt=""><figcaption></figcaption></figure>

```python
m.plot_parameters()
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_15_0.svg" alt=""><figcaption></figcaption></figure>

### Прогноз на 1 шаг вперед с AR-Net: использование нейронной сети

Здесь мы будем использовать мощь нейронной сети для аппроксимации нелинейных закономерностей.

```python
m = NeuralProphet(
    growth="off",
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
    n_lags=3 * 24,
    ar_layers=[32, 32, 32, 32],
    learning_rate=0.003,
)
df_train, df_test = m.split_df(sf_load_df, freq="H", valid_p=1.0 / 12)

metrics = m.fit(df_train, freq="H", validation_df=df_test, progress="bar")
```

```python
metrics.tail(1)
```

|     | MAE\_val | RMSE\_val | Loss\_val | RegLoss\_val | epoch | MAE      | RMSE     | Loss     | RegLoss |
| --- | -------- | --------- | --------- | ------------ | ----- | -------- | -------- | -------- | ------- |
| 108 | 7.14312  | 10.696775 | 0.00016   | 0.0          | 108   | 6.197587 | 9.060362 | 0.000093 | 0.0     |

```python
forecast = m.predict(df_train)
m.set_plotting_backend("plotly-static")
m.plot(forecast)
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_19_1.svg" alt=""><figcaption></figcaption></figure>

```python
forecast = m.predict(df_test)
m = m.highlight_nth_step_ahead_of_each_forecast(1)
m.plot(forecast[-7 * 24 :])
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_20_1.svg" alt=""><figcaption></figcaption></figure>

```python
m.plot_components(forecast[-7 * 24 :])
```

<figure><img src="https://neuralprophet.com/_images/how-to-guides_application-examples_energy_hospital_load_21_0.svg" alt=""><figcaption></figcaption></figure>
