
Une bibliothèque Python pour la prévision conviviale et la détection d'anomalies sur les séries temporelles.

Darts est une bibliothèque Python pour la prévision et la détection d'anomalies
sur les séries temporelles, conçue pour être conviviale. Elle contient une variété de modèles, des classiques tels qu'ARIMA aux
réseaux de neurones profonds. Les modèles de prévision peuvent tous être utilisés de la même manière,
en utilisant les fonctions fit() et predict(), de manière similaire à scikit-learn.
La bibliothèque facilite également le backtesting des modèles,
la combinaison des prédictions de plusieurs modèles et la prise en compte de données externes.
Darts prend en charge les séries temporelles et les modèles univariés et multivariés.
Les modèles basés sur l'apprentissage automatique peuvent être entraînés sur des ensembles de données potentiellement volumineux contenant plusieurs séries
temporelles, et certains des modèles offrent un riche support pour la prévision probabiliste.
Darts offre également des capacités étendues de détection d'anomalies. Par exemple, il est trivial d'appliquer des modèles PyOD sur des séries temporelles pour obtenir des scores d'anomalie, ou d'envelopper n'importe lequel des modèles de prévision ou de filtrage de Darts pour obtenir des modèles de détection d'anomalies complets.
Nous recommandons de configurer d'abord un environnement Python propre pour votre projet avec Python 3.11+ en utilisant votre outil préféré (conda, venv, virtualenv avec ou sans virtualenvwrapper).
Une fois votre environnement configuré, vous pouvez installer darts en utilisant pip :
pip install darts
Pour plus de détails, vous pouvez consulter nos instructions d'installation.
Créez un objet TimeSeries à partir d'un DataFrame Pandas, et divisez-le en séries d'entraînement/validation :```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:]
Ajustez un modèle de lissage exponentiel et effectuez une prédiction (probabiliste) sur la durée de la série de validation :```python
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
Tracez la médiane, les 5e et 95e percentiles :```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>
### Détection d'anomalies
Chargez une série multivariée, tronquez-la, conservez 2 composantes, divisez les ensembles d'entraînement et de validation :```python
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
Construisez un scoreur d'anomalies k-means, entraînez-le sur l'ensemble d'entraînement et utilisez-le sur l'ensemble de validation pour obtenir des scores d'anomalie :```python from darts.ad import KMeansScorer
scorer = KMeansScorer(k=2, window=5) scorer.fit(train) anom_score = scorer.score(val)
Construisez un détecteur d'anomalies binaires et entraînez-le sur les scores d'entraînement,
puis utilisez-le sur les scores de validation pour obtenir une classification binaire des anomalies :```python
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
Tracer (décaler et mettre à l'échelle certaines séries pour que tout apparaisse sur la même figure) :```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>
## Fonctionnalités
* **Modèles de prévision :** Une vaste collection de modèles de prévision pour les tâches de régression ainsi que de classification ; des modèles statistiques (tels que
ARIMA) aux modèles d'apprentissage profond (tels que N-BEATS). Voir les [modèles de prévision](#forecasting-models) ci-dessous.