
darts v0.47.0
Python-библиотека для удобного прогнозирования и обнаружения аномалий на временных рядах.
Простой анализ временных рядов на Python

Darts — это библиотека Python для удобного прогнозирования и обнаружения аномалий
во временных рядах. Она содержит множество моделей: от классических, таких как ARIMA, до
глубоких нейронных сетей. Все модели прогнозирования можно использовать одинаково,
с помощью функций fit() и predict(), аналогично scikit-learn.
Библиотека также упрощает бэктестинг моделей,
объединение прогнозов нескольких моделей и учёт внешних данных.
Darts поддерживает как одномерные, так и многомерные временные ряды и модели.
Модели на основе машинного обучения можно обучать на потенциально больших наборах данных, содержащих множество временных
рядов, а некоторые модели предлагают богатую поддержку вероятностного прогнозирования.
Darts также предлагает обширные возможности обнаружения аномалий. Например, применить модели PyOD к временным рядам для получения оценок аномальности или обернуть любую из моделей прогнозирования или фильтрации Darts, чтобы получить полноценные модели обнаружения аномалий, — это тривиально.
Документация
Вводные материалы
Статьи по отдельным темам
- Обучение моделей на нескольких временных рядах
- Использование прошлых и будущих ковариат
- Временные свёрточные сети и прогнозирование
- Вероятностное прогнозирование
- Перенос обучения для прогнозирования временных рядов
- Иерархическая согласованность прогнозов
Быстрая установка
Мы рекомендуем сначала настроить чистое окружение Python для вашего проекта с Python 3.11+, используя ваш любимый инструмент (conda, venv, virtualenv с или без virtualenvwrapper).
После настройки окружения вы можете установить darts с помощью pip:
pip install darts
Для получения дополнительной информации обратитесь к нашим инструкциям по установке.
Пример использования
Прогнозирование
Создайте объект TimeSeries из Pandas DataFrame и разделите его на обучающую и валидационную серии:
import pandas as pd
from darts import TimeSeries
# Read a pandas DataFrame
df = pd.read_csv("AirPassengers.csv", delimiter=",")
# Create a TimeSeries, specifying the time and value columns
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")
# Set aside the last 36 months as a validation series
train, val = series[:-36], series[-36:]
Подгоните модель экспоненциального сглаживания и сделайте (вероятностный) прогноз на продолжительность валидационного ряда:
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
Постройте график медианы, 5-го и 95-го процентилей:
import matplotlib.pyplot as plt
series.plot()
prediction.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)
plt.legend()
Обнаружение аномалий
Загрузите многомерный ряд, обрежьте его, оставьте 2 компонента, разделите на обучающую и валидационную выборки:
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
Постройте скорер аномалий на основе k-means, обучите его на обучающем наборе и примените его к валидационному набору для получения оценок аномальности:
from darts.ad import KMeansScorer
scorer = KMeansScorer(k=2, window=5)
scorer.fit(train)
anom_score = scorer.score(val)
Создайте бинарный детектор аномалий и обучите его на train-оценках, затем примените его к validation-оценкам для получения бинарной классификации аномалий:
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
Построение графика (сдвиг и масштабирование некоторых рядов, чтобы всё отображалось на одном рисунке):
import matplotlib.pyplot as plt
series.plot()
(anom_score / 2. - 100).plot(label="computed anomaly score", c="orangered", lw=3)
(binary_anom * 45 - 150).plot(label="detected binary anomaly", lw=4)
Возможности
-
Модели прогнозирования: Большая коллекция моделей прогнозирования как для задач регрессии, так и для задач классификации; от статистических моделей (таких как ARIMA) до моделей глубокого обучения (таких как N-BEATS). См. модели прогнозирования ниже.
-
Обнаружение аномалий Модуль
darts.adсодержит коллекцию скореров аномалий, детекторов и агрегаторов, которые можно комбинировать для обнаружения аномалий во временных рядах. Легко обернуть любую из моделей прогнозирования или фильтрации Darts, чтобы построить полноценную модель обнаружения аномалий, сравнивающую прогнозы с фактическими значениями.PyODScorerделает тривиальным использование детекторов PyOD для временных рядов.