Добавить в корзинуПозвонить
Найти в Дзене
SkyNet | Новости ИИ

Руководство по программированию для создания гибких многомодельных рабочих процессов в GluonTS с использованием синтетических данных, оценки

Руководство по программированию для создания гибких многомодельных рабочих процессов в GluonTS с использованием синтетических данных, оценки и расширенной визуализации В этом руководстве мы рассмотрим GluonTS с практической точки зрения, где мы генерируем сложные синтетические наборы данных, подготавливаем их и применяем несколько моделей параллельно. Мы сосредоточимся на том, как работать с различными оценщиками в одном конвейере, изящно обрабатывать отсутствующие зависимости и при этом получать пригодные для использования результаты. Импорт основных библиотек Мы начинаем с импорта основных библиотек для работы с данными, визуализации и утилит GluonTS. Мы также настраиваем условные импорты для оценщиков PyTorch и MXNet, что позволяет нам гибко использовать любой бэкенд, доступный в нашей среде. ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt from datetime import datetime, timedelta import warnings warnings.filterwarnings('ignore') from gluonts.dat

Руководство по программированию для создания гибких многомодельных рабочих процессов в GluonTS с использованием синтетических данных, оценки и расширенной визуализации

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

Импорт основных библиотек

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

```python

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from datetime import datetime, timedelta

import warnings

warnings.filterwarnings('ignore')

from gluonts.dataset.pandas import PandasDataset

from gluonts.dataset.split import split

from gluonts.evaluation import makeevaluationpredictions, Evaluator

from gluonts.dataset.artificial import ComplexSeasonalTimeSeries

try:

from gluonts.torch import DeepAREstimator

TORCH_AVAILABLE = True

except ImportError:

TORCH_AVAILABLE = False

try:

from gluonts.mx import DeepAREstimator as MXDeepAREstimator

from gluonts.mx import SimpleFeedForwardEstimator

MX_AVAILABLE = True

except ImportError:

MX_AVAILABLE = False

```

Создание синтетического набора данных

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

```python

def createsyntheticdataset(numseries=50, length=365, predictionlength=30):

"""Generate synthetic multi-variate time series with trends, seasonality, and noise"""

np.random.seed(42)

series_list = []

for i in range(num_series):

trend = np.cumsum(np.random.normal(0.1 + i*0.01, 0.1, length))

daily_season = 10 np.sin(2 np.pi * np.arange(length) / 7)

yearly_season = 20 np.sin(2 np.pi * np.arange(length) / 365.25)

noise = np.random.normal(0, 5, length)

values = np.maximum(trend + dailyseason + yearlyseason + noise + 100, 1)

dates = pd.date_range(start='2020-01-01', periods=length, freq='D')

serieslist.append(pd.Series(values, index=dates, name=f'series{i}'))

return pd.concat(series_list, axis=1)

```

Обучение моделей прогнозирования

Мы генерируем 10-серийный набор данных, оборачиваем его в GluonTS PandasDataset и разделяем на обучающие и тестовые окна. Затем мы инициализируем несколько оценщиков (PyTorch DeepAR, MXNet DeepAR и FeedForward), когда это возможно, и переходим к встроенному искусственному набору данных, если бэкенды не загружаются.

```python

print(" Creating synthetic multi-series dataset...")

df = createsyntheticdataset(numseries=10, length=200, predictionlength=30)

dataset = PandasDataset(df, target=df.columns.tolist())

trainingda...

Читать далее