
darts v0.47.0
Una librería de Python fácil de usar para la previsión y detección de anomalías en series temporales.
Series Temporales Fáciles en Python

Darts es una biblioteca de Python para el pronóstico y la detección de anomalías
en series temporales de forma sencilla. Contiene una variedad de modelos, desde clásicos como ARIMA hasta
redes neuronales profundas. Todos los modelos de pronóstico se pueden usar de la misma manera,
utilizando las funciones fit() y predict(), de forma similar a scikit-learn.
La biblioteca también facilita el backtesting de modelos,
la combinación de las predicciones de varios modelos y la consideración de datos externos.
Darts admite tanto series temporales y modelos univariantes como multivariantes.
Los modelos basados en ML se pueden entrenar con conjuntos de datos potencialmente grandes que contienen múltiples series
temporales, y algunos de los modelos ofrecen un amplio soporte para el pronóstico probabilístico.
Darts también ofrece amplias capacidades de detección de anomalías. Por ejemplo, es trivial aplicar modelos PyOD sobre series temporales para obtener puntuaciones de anomalía, o envolver cualquiera de los modelos de pronóstico o filtrado de Darts para obtener modelos de detección de anomalías completamente funcionales.
Documentación
Introducciones de Alto Nivel
Artículos sobre Temas Seleccionados
- Entrenamiento de Modelos con Múltiples Series Temporales
- Uso de Covariables Pasadas y Futuras
- Redes Convolucionales Temporales y Pronóstico
- Pronóstico Probabilístico
- Aprendizaje por Transferencia para el Pronóstico de Series Temporales
- Reconciliación de Pronósticos Jerárquicos
Instalación Rápida
Recomendamos configurar primero un entorno de Python limpio para tu proyecto con Python 3.11+ usando tu herramienta favorita (conda, venv, virtualenv con o sin virtualenvwrapper).
Una vez que tu entorno esté configurado, puedes instalar darts usando pip:
pip install darts
Para más detalles, puedes consultar nuestras instrucciones de instalación.
Ejemplo de Uso
Pronóstico
Crea un objeto TimeSeries a partir de un DataFrame de Pandas y divídelo en series de entrenamiento/validación:
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:]
Ajuste un modelo de suavizado exponencial y realice una predicción (probabilística) sobre la duración de la serie de validación:
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
Representa la mediana, los percentiles 5 y 95:
import matplotlib.pyplot as plt
series.plot()
prediction.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)
plt.legend()
Detección de anomalías
Carga una serie multivariante, recórtala, conserva 2 componentes, divide los conjuntos de entrenamiento y validación:
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
Construye un scorer de anomalías k-means, entrénalo con el conjunto de entrenamiento y úsalo en el conjunto de validación para obtener puntuaciones de anomalía:
from darts.ad import KMeansScorer
scorer = KMeansScorer(k=2, window=5)
scorer.fit(train)
anom_score = scorer.score(val)
Construye un detector de anomalías binario y entrénalo con las puntuaciones de entrenamiento, luego úsalo con las puntuaciones de validación para obtener una clasificación binaria de anomalías:
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
Trazar (desplazando y escalando algunas de las series para que todo aparezca en la misma figura):
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)
Características
- Modelos de Pronóstico: Una gran colección de modelos de pronóstico tanto para tareas de regresión como de clasificación; desde modelos estadísticos (como ARIMA) hasta modelos de aprendizaje profundo (como N-BEATS). Consulte los modelos de pronóstico a continuación.