# Урок 2: Тренды

В этом учебнике мы научимся использовать компонент `Trend` для моделирования трендов временного ряда.

Мы начинаем с того же начального набора, что и в предыдущем уроке, в плане импорта необходимых библиотек и загрузки данных.

```python
import pandas as pd
from neuralprophet import NeuralProphet, set_log_level

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

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

```

В NeuralProphet по умолчанию включены компоненты `Тренд` и `Сезонность`. В этом втором уроке мы подробнее рассмотрим компонент `Тренд` и начнем с его самой базовой конфигурации. Поэтому мы сейчас отключим компонент `Сезонность` и установим количество точек изменения `Тренда` на `0` (ноль).

```python
# Модель и прогнозирование
m = NeuralProphet(
    # Отключение изменения точек изменения тренда
    n_changepoints=0,
    # Отключение сезонных компонентов
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
)
m.set_plotting_backend("plotly-static")
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)

```

<figure><img src="https://neuralprophet.com/_images/tutorials_tutorial02_4_3.png" alt=""><figcaption></figcaption></figure>

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

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

```python
m.plot_components(forecast, components=["trend"])
```

<figure><img src="https://neuralprophet.com/_images/tutorials_tutorial02_6_0.png" alt=""><figcaption></figcaption></figure>

NeuralProphet использует классический подход для моделирования тренда, комбинируя начальное значение *<mark style="color:blue;">**m**</mark>* и скорость роста *<mark style="color:blue;">**k**</mark>*. Влияние тренда в момент времени *<mark style="color:blue;">**t1**</mark>* определяется умножением скорости роста *<mark style="color:blue;">**k**</mark>* на разницу времени *<mark style="color:blue;">**t1 - t0**</mark>* с начальной точки *<mark style="color:blue;">**t0**</mark>* плюс начальное значение *<mark style="color:blue;">**m**</mark>*.

<figure><img src="/files/N6I6YjC8s19pyuUdpYwS" alt=""><figcaption></figcaption></figure>

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

```python
df_future = m.make_future_dataframe(df, periods=365, n_historic_predictions=True)

# Прогнозирование будущих значений
forecast = m.predict(df_future)

# Визуализация прогноза
m.plot(forecast)

```

<figure><img src="https://neuralprophet.com/_images/tutorials_tutorial02_8_1.png" alt=""><figcaption></figcaption></figure>

Линейный тренд продолжается в будущем. В целом, наблюдается небольшой восходящий тренд в данных.

После изучения основ тенденций в NeuralProphet, давайте рассмотрим точки изменения тренда, которые мы ранее отключили. Точки изменения тренда — это моменты времени, когда тренд меняется. NeuralProphet автоматически обнаруживает эти точки изменения и подстраивает новую линию тренда к данным до и после точки изменения. Давайте посмотрим, сколько точек изменения тренда обнаружил NeuralProphet.

```python
# Модель и прогнозирование
m = NeuralProphet(
    # Использование количества точек изменения тренда по умолчанию (10)
    # n_changepoints=0,
    # Отключение сезонных компонентов
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
)
m.set_plotting_backend("matplotlib")  # Использование matplotlib из-за #1235
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)

```

<figure><img src="https://neuralprophet.com/_images/tutorials_tutorial02_11_3.png" alt=""><figcaption></figcaption></figure>

```python
m.plot_parameters(components=["trend"])
```

<figure><img src="https://neuralprophet.com/_images/tutorials_tutorial02_12_0.png" alt=""><figcaption></figcaption></figure>

Теперь трендовая линия значительно лучше соответствует данным. Мы видим, что NeuralProphet использовал значение параметра по умолчанию в 10 точек изменений и адаптировал их под наши данные.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/neuralprophet/novye-uroki/urok-2-trendy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
