
Uma biblioteca python para previsão e detecção de anomalias em séries temporais, projetada para ser fácil de usar.

Darts é uma biblioteca Python para previsão e detecção de anomalias
em séries temporais de forma amigável ao usuário. Ela contém uma variedade de modelos, desde clássicos como ARIMA até
redes neurais profundas. Todos os modelos de previsão podem ser usados da mesma forma,
utilizando as funções fit() e predict(), de maneira semelhante ao scikit-learn.
A biblioteca também facilita o backtesting de modelos,
a combinação das previsões de vários modelos e a consideração de dados externos.
O Darts suporta séries temporais e modelos tanto univariados quanto multivariados.
Os modelos baseados em ML podem ser treinados em conjuntos de dados potencialmente grandes contendo múltiplas séries
temporais, e alguns dos modelos oferecem um rico suporte para previsão probabilística.
O Darts também oferece amplas capacidades de detecção de anomalias. Por exemplo, é trivial aplicar modelos PyOD em séries temporais para obter pontuações de anomalia, ou encapsular qualquer um dos modelos de previsão ou filtragem do Darts para obter modelos de detecção de anomalias completos.
Recomendamos primeiro configurar um ambiente Python limpo para o seu projeto com Python 3.11+ usando sua ferramenta favorita (conda, venv, virtualenv com ou sem virtualenvwrapper).
Depois que seu ambiente estiver configurado, você pode instalar o darts usando pip:
pip install darts
Para mais detalhes, você pode consultar nossas instruções de instalação.
Crie um objeto TimeSeries a partir de um Pandas DataFrame e divida-o em séries de treino/validação:```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:]
Ajuste um modelo de suavização exponencial e faça uma previsão (probabilística) sobre a duração da série de validação:```python
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
Plote a mediana, os percentis 5 e 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>
### Detecção de Anomalias
Carregue uma série multivariada, faça o trim, mantenha 2 componentes, divida os conjuntos de treino e validação:```python
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
Construa um scorer de anomalias k-means, treine-o no conjunto de treino e use-o no conjunto de validação para obter pontuações de anomalia:```python from darts.ad import KMeansScorer
scorer = KMeansScorer(k=2, window=5) scorer.fit(train) anom_score = scorer.score(val)
Construa um detector de anomalias binário e treine-o com pontuações de treino,
depois use-o sobre pontuações de validação para obter classificação binária de anomalias:```python
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
Plot (deslocando e escalando algumas das séries para fazer tudo aparecer na mesma 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>
## Recursos
* **Modelos de Previsão:** Uma grande coleção de modelos de previsão para tarefas de regressão e classificação; desde modelos estatísticos (como
ARIMA) até modelos de aprendizado profundo (como N-BEATS). Veja os [modelos de previsão](#forecasting-models) abaixo.