Назад к обновлениям
New releaseSep 6, 2026

darts v0.47.0

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

Поделиться

Простой анализ временных рядов на Python

darts


PyPI version Conda Version Supported versions Docker Image Version (latest by date) GitHub Release Date GitHub Workflow Status Downloads Downloads codecov Code style: black Join the chat at https://gitter.im/u8darts/darts

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()
пример прогноза darts

Обнаружение аномалий

Загрузите многомерный ряд, обрежьте его, оставьте 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)
пример обнаружения аномалий в darts

Возможности

  • Модели прогнозирования: Большая коллекция моделей прогнозирования как для задач регрессии, так и для задач классификации; от статистических моделей (таких как ARIMA) до моделей глубокого обучения (таких как N-BEATS). См. модели прогнозирования ниже.

  • Обнаружение аномалий Модуль darts.ad содержит коллекцию скореров аномалий, детекторов и агрегаторов, которые можно комбинировать для обнаружения аномалий во временных рядах. Легко обернуть любую из моделей прогнозирования или фильтрации Darts, чтобы построить полноценную модель обнаружения аномалий, сравнивающую прогнозы с фактическими значениями. PyODScorer делает тривиальным использование детекторов PyOD для временных рядов.

Категории