
Una libreria Python per previsioni intuitive e rilevamento di anomalie su serie temporali.

Darts è una libreria Python per il forecasting e il rilevamento di anomalie
su serie temporali, pensata per essere facile da usare. Contiene una varietà di modelli, dai classici come ARIMA alle
reti neurali profonde. I modelli di forecasting possono essere tutti utilizzati allo stesso modo,
tramite le funzioni fit() e predict(), in modo simile a scikit-learn.
La libreria rende inoltre semplice il backtesting dei modelli,
la combinazione delle previsioni di più modelli e la considerazione di dati esterni.
Darts supporta sia serie temporali e modelli univariati che multivariati.
I modelli basati su ML possono essere addestrati su dataset potenzialmente grandi contenenti più serie
temporali, e alcuni dei modelli offrono un ricco supporto per il forecasting probabilistico.
Darts offre anche ampie capacità di rilevamento di anomalie. Ad esempio, è banale applicare modelli PyOD su serie temporali per ottenere anomaly score, oppure incapsulare qualsiasi modello di forecasting o filtraggio di Darts per ottenere modelli di rilevamento di anomalie completi.
Consigliamo di configurare prima un ambiente Python pulito per il tuo progetto con Python 3.11+ utilizzando il tuo strumento preferito (conda, venv, virtualenv con o senza virtualenvwrapper).
Una volta configurato l'ambiente, puoi installare darts usando pip:
pip install darts
Per maggiori dettagli puoi consultare le nostre istruzioni di installazione.
Crea un oggetto TimeSeries da un Pandas DataFrame e suddividilo in serie di training/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:]
Adatta un modello di smoothing esponenziale e fai una previsione (probabilistica) sulla durata della serie di validazione:```python
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
Traccia la mediana, il 5° e il 95° percentile:```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>
### Rilevamento delle anomalie
Carica una serie multivariata, ritagliala, mantieni 2 componenti, dividi i set di addestramento e validazione:```python
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
Costruisci uno scorer di anomalie k-means, addestralo sul set di addestramento e usalo sul set di validazione per ottenere i punteggi di anomalia:```python from darts.ad import KMeansScorer
scorer = KMeansScorer(k=2, window=5) scorer.fit(train) anom_score = scorer.score(val)
Costruisci un rilevatore di anomalie binarie e addestralo sui punteggi di training,
poi usalo sui punteggi di validazione per ottenere una classificazione binaria delle anomalie:```python
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
Traccia (spostando e scalando alcune delle serie per far apparire tutto sulla stessa 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>
## Funzionalità
* **Modelli di Previsione:** Un'ampia collezione di modelli di previsione per attività di regressione e classificazione; dai modelli statistici (come
ARIMA) ai modelli di deep learning (come N-BEATS). Vedi i [modelli di previsione](#forecasting-models) di seguito.