Interactive Timeseries Forecasting with Darts!

EDIT 1: More models in playground version (see comment)

Streamlit + Darts Demo live

See the screencast below for demos on training and forecasting on Heater purchases and personal spending (from a real bank CSV export format)!

Adding streamlit inputs to the Darts documentation example led to this quick demo project that lets you explore any univariate Timeseries CSV and make forecasts with an Exponential Smoothing model (more models to come).

I wanted to explore the claim of “Time Series Made Easy in Python” by the Darts library.

I knew from their pydata talk that making something interactive around the training API would be straightforward.

This version will resample and sum values to get to monthly samples (or change to weekly / quarterly / etc); there are other Pandas resampling aggregation options though!

See the app script source

darts_demo

darts_custom

(apologies for the speed, I wanted to keep the video short)

Free CSV Entry Direct Link

Next steps on this would be:

  • Series / Data info and timeseries attributes

  • Exposing configuration options for the model

  • Adding other model options from Darts

  • Backtest / Historical Forecast view

  • Grid search result view

(I also need to get around to making a gif maker that is easier than ffmpeg! EDIT: https://share.streamlit.io/gerardrbentley/gif-maker/main)

5 Likes

Darts API Playground

Darts and Streamlit App

Tested 14 models listed below on some Univariate and Multivariate datasets!

So Far:

  • Example datasets
  • Upload your own dataset
  • Model fit hand tuning on parameterized models. (Model docs included in expander; __doc__ strings and signature based)
  • Model forecasting and plotting controls
  • Downloadable forecasts
    EDIT New features
  • Dataset Seasonality, Trend, and other Metrics
  • Error Metrics over forecasted periods
  • Historical Forecasting
  • Backtested Error Metrics
  • Flexible forecasting horizon and stride for backtesting

Explore A Time Series!

Use your own csv data that has a time column and plot some forecasts!

Or use one of the example Darts datasets

Explorable Models

  • NaiveDrift

  • NaiveMean

  • NaiveSeasonal

  • ARIMA

  • VARIMA (Requires Multivariate dataset)

  • ExponentialSmoothing

  • LinearRegressionModel (Hand set Lag)

  • FFT

  • Theta

  • FourTheta

  • KalmanForecaster

  • LightGBMModel

  • RandomForest (Hand set Lag)

  • RegressionModel

Not Yet Explorable Models

  • Ensembles

  • NaiveEnsembleModel

  • EnsembleModel

  • RegressionEnsembleModel

  • Neural Net Based

  • RNNModel (incl. LSTM and GRU); equivalent to DeepAR in its probabilistic version,True,True,True,True,False,True,DeepAR paper

  • BlockRNNModel (incl. LSTM and GRU),True,True,True,True,True,False,

  • NBEATSModel,True,True,True,True,True,False,N-BEATS paper

  • TCNModel,True,True,True,True,True,False,“TCN paper, DeepTCN paper, blog post”

  • TransformerModel,True,True,True,True,True,False,

  • TFTModel (Temporal Fusion Transformer),True,True,True,True,True,True,“TFT paper, PyTorch Forecasting”

  • Prophet

Cheers! :beers:

1 Like

Very cool! Thanks for sharing @gerardrbentley.

1 Like

Nice. I hope to get some time to look at this.