
Una librería de Python fácil de usar para la previsión y detección de anomalías en series temporales.

Darts es una biblioteca de Python para el pronóstico y la detección de anomalías
en series temporales de forma intuitiva. 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 desarrollados.
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.
Crea un objeto TimeSeries a partir de un DataFrame de Pandas y divídelo en series de entrenamiento/validación:```python
import pandas as pd
from darts import TimeSeries
df = pd.read_csv("AirPassengers.csv", delimiter=",")
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")
train, val = series[:-36], series[-36:]
Ajusta un modelo de suavizado exponencial y realiza una predicción (probabilística) sobre la duración de la serie de validación:```python
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
Traza la mediana, los percentiles 5 y 95:```python import matplotlib.pyplot as plt
series.plot() prediction.plot(label="forecast", low_quantile=0.05, high_quantile=0.95) plt.legend()
<div style="text-align:center;">
<img src="https://raw.githubusercontent.com/unit8co/darts/master/static/images/example.png" alt="darts forecast example" />
</div>
### Detección de anomalías
Carga una serie multivariante, recórtala, conserva 2 componentes, divide los conjuntos de entrenamiento y validación:```python
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
Construye un puntuador 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ías:```python 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:```python
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
Gráfico (desplazando y escalando algunas de las series para que todo aparezca en la misma figura):```python 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)
<div style="text-align:center;">
<img src="https://raw.githubusercontent.com/unit8co/darts/master/static/images/example_ad.png" alt="darts anomaly detection example" />
</div>
## Características
* **Modelos de Pronóstico:** Una gran colección de modelos de pronóstico para tareas de regresión y clasificación; desde modelos estadísticos (como
ARIMA) hasta modelos de aprendizaje profundo (como N-BEATS). Consulte los [modelos de pronóstico](#forecasting-models) a continuación.