All Projects → unit8co → Darts

unit8co / Darts

Licence: apache-2.0
A python library for easy manipulation and forecasting of time series.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Darts

Web Traffic Forecasting
Kaggle | Web Traffic Forecasting 📈
Stars: ✭ 596 (-21.58%)
Mutual labels:  time-series, forecasting
tsfeatures
Calculates various features from time series data. Python implementation of the R package tsfeatures.
Stars: ✭ 87 (-88.55%)
Mutual labels:  time-series, forecasting
time-series-autoencoder
📈 PyTorch dual-attention LSTM-autoencoder for multivariate Time Series 📈
Stars: ✭ 198 (-73.95%)
Mutual labels:  time-series, forecasting
ts-forecasting-ensemble
CentOS based Docker container for Time Series Analysis and Modeling.
Stars: ✭ 19 (-97.5%)
Mutual labels:  time-series, forecasting
Atspy
AtsPy: Automated Time Series Models in Python (by @firmai)
Stars: ✭ 340 (-55.26%)
Mutual labels:  time-series, forecasting
gpu accelerated forecasting modeltime gluonts
GPU-Accelerated Deep Learning for Time Series using Modeltime GluonTS (Learning Lab 53). Event sponsors: Saturn Cloud, NVIDIA, & Business Science.
Stars: ✭ 20 (-97.37%)
Mutual labels:  time-series, forecasting
TSForecasting
This repository contains the implementations related to the experiments of a set of publicly available datasets that are used in the time series forecasting research space.
Stars: ✭ 53 (-93.03%)
Mutual labels:  time-series, forecasting
mlforecast
Scalable machine 🤖 learning for time series forecasting.
Stars: ✭ 96 (-87.37%)
Mutual labels:  time-series, forecasting
Luminaire
Luminaire is a python package that provides ML driven solutions for monitoring time series data.
Stars: ✭ 316 (-58.42%)
Mutual labels:  time-series, forecasting
Pyaf
PyAF is an Open Source Python library for Automatic Time Series Forecasting built on top of popular pydata modules.
Stars: ✭ 289 (-61.97%)
Mutual labels:  time-series, forecasting
modeltime.gluonts
GluonTS Deep Learning with Modeltime
Stars: ✭ 31 (-95.92%)
Mutual labels:  time-series, forecasting
Flow Forecast
Deep learning PyTorch library for time series forecasting, classification, and anomaly detection (originally for flood forecasting).
Stars: ✭ 368 (-51.58%)
Mutual labels:  time-series, forecasting
modeltime.resample
Resampling Tools for Time Series Forecasting with Modeltime
Stars: ✭ 12 (-98.42%)
Mutual labels:  time-series, forecasting
Arch
ARCH models in Python
Stars: ✭ 660 (-13.16%)
Mutual labels:  time-series, forecasting
forecasting models
An overview of univariate time series forecasting models with sample code.
Stars: ✭ 39 (-94.87%)
Mutual labels:  time-series, forecasting
magi
📈 high level wrapper for parallel univariate time series forecasting 📉
Stars: ✭ 17 (-97.76%)
Mutual labels:  time-series, forecasting
ewstools
Python package for early warning signals (EWS) of bifurcations in time series data.
Stars: ✭ 29 (-96.18%)
Mutual labels:  time-series, forecasting
modeltime.ensemble
Time Series Ensemble Forecasting
Stars: ✭ 65 (-91.45%)
Mutual labels:  time-series, forecasting
Merlion
Merlion: A Machine Learning Framework for Time Series Intelligence
Stars: ✭ 2,368 (+211.58%)
Mutual labels:  time-series, forecasting
Timetk
A toolkit for working with time series in R
Stars: ✭ 371 (-51.18%)
Mutual labels:  time-series, forecasting

Time Series Made Easy in Python

darts


PyPI version GitHub Workflow Status Supported versions Docker Image Version (latest by date) PyPI - Downloads GitHub Release Date

darts is a python library for easy manipulation and forecasting of time series. It contains a variety of models, from classics such as ARIMA to neural networks. The models can all be used in the same way, using fit() and predict() functions, similar to scikit-learn. The library also makes it easy to backtest models, and combine the predictions of several models and external regressors. Darts supports both univariate and multivariate time series and models, and the neural networks can be trained multiple time series.

Documentation

High Level Introductions

Install

We recommend to first setup a clean python environment for your project with at least python 3.6 using your favorite tool (conda, venv, virtualenv with or without virtualenvwrapper).

Once your environment is setup you can install darts using pip:

pip install 'u8darts[all]'

For more detailed install instructions you can refer to our installation guide at the end of this page.

Example Usage

Create a TimeSeries object from a Pandas DataFrame, and split it in train/validation series:

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.split_after(pd.Timestamp('19580101'))

The dataset used in this example can be downloaded from this link.

Fit an exponential smoothing model, and make a prediction over the validation series' duration:

from darts.models import ExponentialSmoothing

model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val))

Plot:

import matplotlib.pyplot as plt

series.plot(label='actual')
prediction.plot(label='forecast', lw=2)
plt.legend()
plt.xlabel('Year')
darts forecast example

We invite you to go over the example and tutorial notebooks in the examples directory.

Features

Currently, the library contains the following features:

Forecasting Models:

  • Exponential smoothing,
  • ARIMA & auto-ARIMA,
  • Facebook Prophet,
  • Theta method,
  • FFT (Fast Fourier Transform),
  • Recurrent neural networks (vanilla RNNs, GRU, and LSTM variants),
  • Temporal convolutional network.
  • Transformer
  • N-BEATS

Data processing: Tools to easily apply (and revert) common transformations on time series data (scaling, boxcox, …)

Metrics: A variety of metrics for evaluating time series' goodness of fit; from R2-scores to Mean Absolute Scaled Error.

Backtesting: Utilities for simulating historical forecasts, using moving time windows.

Regressive Models: Possibility to predict a time series from several other time series (e.g., external regressors), using arbitrary regressive models

Multivariate Support: Tools to create, manipulate and forecast multivariate time series.

Contribute

The development is ongoing, and there are many new features that we want to add. We welcome pull requests and issues on GitHub.

Before working on a contribution (a new feature or a fix) make sure you can't find anything related in issues. If there is no on-going effort on what you plan to do then we recommend to do the following:

  1. Create an issue, describe how you would attempt to solve it, and if possible wait for a discussion.
  2. Fork the repository.
  3. Clone the forked repository locally.
  4. Create a clean python env and install requirements with pip: pip install -r requirements/dev-all.txt
  5. Create a new branch:
    • Branch off from the develop branch.
    • Prefix the branch with the type of update you are making:
      • feature/
      • fix/
      • refactor/
    • Work on your update
  6. Check that your code passes all the tests and design new unit tests if needed: ./gradlew unitTest_all.
  7. Verify your tests coverage by running ./gradlew coverageTest
    • Additionally you can generate an xml report and use VSCode Coverage gutter to identify untested lines with ./coverage.sh xml
  8. If your contribution introduces a significant change, add it to CHANGELOG.md under the "Unreleased" section.
  9. Create a pull request from your new branch to the develop branch.

Contact Us

If what you want to tell us is not a suitable github issue, feel free to send us an email at [email protected] for darts related matters or [email protected] for any other inquiries.

Installation Guide

Preconditions

Some of the models depend on fbprophet and torch, which have non-Python dependencies. A Conda environment is thus recommended because it will handle all of those in one go.

The following steps assume running inside a conda environment. If that's not possible, first follow the official instructions to install fbprophet and torch, then skip to Install darts

To create a conda environment for Python 3.7 (after installing conda):

conda create --name <env-name> python=3.7

Don't forget to activate your virtual environment

conda activate <env-name>

MAC

conda install -c conda-forge -c pytorch pip fbprophet pytorch

Linux and Windows

conda install -c conda-forge -c pytorch pip fbprophet pytorch cpuonly

Install darts

Install Darts with all available models: pip install 'u8darts[all]'.

As some models have relatively heavy (or non-Python) dependencies, we also provide the following alternate lighter install options:

  • Install core only (without neural networks, Prophet or AutoARIMA): pip install u8darts
  • Install core + neural networks (PyTorch): pip install 'u8darts[torch]'
  • Install core + Facebook Prophet: pip install 'u8darts[fbprophet]'
  • Install core + AutoARIMA: pip install 'u8darts[pmdarima]'

Running the examples only, without installing:

If the conda setup is causing too many problems, we also provide a Docker image with everything set up for you and ready-to-use python notebooks with demo examples. To run the example notebooks without installing our libraries natively on your machine, you can use our Docker image:

./gradlew docker && ./gradlew dockerRun

Then copy and paste the URL provided by the docker container into your browser to access Jupyter notebook.

For this setup to work you need to have a Docker service installed. You can get it at Docker website.

Tests

The gradle setup works best when used in a python environment, but the only requirement is to have pip installed for Python 3+

To run all tests at once just run

./gradlew test_all

alternatively you can run

./gradlew unitTest_all # to run only unittests
./gradlew coverageTest # to run coverage
./gradlew lint         # to run linter

To run the tests for specific flavours of the library, replace _all with _core, _fbprophet, _pmdarima or _torch.

Documentation

To build documantation locally just run

./gradlew buildDocs

After that docs will be available in ./docs/build/html directory. You can just open ./docs/build/html/index.html using your favourite browser.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].