
Eine Python-Bibliothek für benutzerfreundliche Prognose und Anomalieerkennung auf Zeitreihen.

Darts ist eine Python-Bibliothek für benutzerfreundliche Prognosen und Anomalieerkennung
bei Zeitreihen. Sie enthält eine Vielzahl von Modellen, von Klassikern wie ARIMA bis hin zu
tiefen neuronalen Netzen. Alle Prognosemodelle können auf die gleiche Weise verwendet werden,
mit fit()- und predict()-Funktionen, ähnlich wie bei scikit-learn.
Die Bibliothek erleichtert auch das Backtesting von Modellen,
die Kombination der Vorhersagen mehrerer Modelle und die Berücksichtigung externer Daten.
Darts unterstützt sowohl univariate als auch multivariate Zeitreihen und Modelle.
Die ML-basierten Modelle können auf potenziell großen Datensätzen mit mehreren Zeitreihen
trainiert werden, und einige der Modelle bieten umfangreiche Unterstützung für probabilistische Prognosen.
Darts bietet außerdem umfangreiche Anomalieerkennungsfunktionen. Beispielsweise ist es trivial, PyOD-Modelle auf Zeitreihen anzuwenden, um Anomalie-Scores zu erhalten, oder eines der Prognose- oder Filtermodelle von Darts zu umhüllen, um vollwertige Anomalieerkennungsmodelle zu erhalten.
Wir empfehlen, zunächst eine saubere Python-Umgebung für Ihr Projekt mit Python 3.11+ und Ihrem bevorzugten Tool einzurichten (conda, venv, virtualenv mit oder ohne virtualenvwrapper).
Sobald Ihre Umgebung eingerichtet ist, können Sie darts mit pip installieren:
pip install darts
Weitere Details finden Sie in unseren Installationsanweisungen.
Erstellen Sie ein TimeSeries-Objekt aus einem Pandas DataFrame und teilen Sie es in Trainings-/Validierungsreihen auf:```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:]
Fit ein exponentielles Glättungsmodell an und erstelle eine (probabilistische) Vorhersage über die Dauer der Validierungsreihe:```python
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
Stellen Sie den Median sowie das 5. und 95. Perzentil dar:```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>
### Anomalieerkennung
Laden Sie eine multivariate Zeitreihe, kürzen Sie sie, behalten Sie 2 Komponenten bei und teilen Sie sie in Trainings- und Validierungsdatensätze auf:```python
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
Erstelle einen k-means-Anomalie-Scorer, trainiere ihn auf dem Trainingsset und verwende ihn auf dem Validierungsset, um Anomalie-Scores zu erhalten:```python from darts.ad import KMeansScorer
scorer = KMeansScorer(k=2, window=5) scorer.fit(train) anom_score = scorer.score(val)
Erstelle einen binären Anomalie-Detektor und trainiere ihn mit Trainings-Scores,
verwende ihn dann mit Validierungs-Scores, um eine binäre Anomalie-Klassifizierung zu erhalten:```python
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
Plot (Verschieben und Skalieren einiger der Reihen, damit alles in derselben Abbildung erscheint):```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>
## Funktionen
* **Prognosemodelle:** Eine große Sammlung von Prognosemodellen für Regressions- sowie Klassifikationsaufgaben; von statistischen Modellen (wie
ARIMA) bis hin zu Deep-Learning-Modellen (wie N-BEATS). Siehe die [Prognosemodelle](#forecasting-models) unten.