The practitioner's time series forecasting library
Project description
Scalecast
About
Scalecast is a light-weight time-series forecasting procedure, wrapper, and results container built by and for applied Data Scientists using an ML framework. It offers a streamlined transforming, tuning, reverting, and reporting interface with many model classes, from basic ARIMA and linear models to boosted trees and recurrent neural nets. No matter which models you want to play with, the uniform interface makes it easy and fun to get results quickly.
Official Docs
Example Starter Code
from scalecast.Forecaster import Forecaster
from scalecast.Pipeline import Pipeline, Transformer, Reverter
from scalecast.auxmodels import mlp_stack
from scalecast import GridGenerator
import matplotlib.pyplot as plt
import pandas_datareader as pdr
# add more/fewer models to the below tuple
models = (
'mlr',
'elasticnet',
'lightgbm',
'knn',
) # https://scalecast.readthedocs.io/en/latest/Forecaster/_forecast.html
# grids for tuning models (see the Grids.py file)
GridGenerator.get_example_grids()
# extract data (this is an example dataset)
df = pdr.get_data_fred(
'HOUSTNSA',
start='1959-01-01',
end='2022-08-01'
)
# build the forecaster object
f = Forecaster(
y=df['HOUSTNSA'],
current_dates=df.index,
future_dates=24,
test_length=48, # not required to set a test length but testing models is necessary for generating confidence intervals
cis = True, # all models called will have confidence intervals if this is True (default is False)
)
# this function will be placed in a pipeline
def forecaster(f,models):
f.add_covid19_regressor()
f.auto_Xvar_select()
f.tune_test_forecast(
models,
dynamic_testing=24, # test-set metrics will be an average of rolling 24-step forecasts
cross_validate=True, # models tuned with cross-validation, excludes test set
k = 3, # 3-fold (time series) cross validation
)
mlp_stack(f,models) # a stacking model offered by scalecast
# transform data to make it stationary/easier to predict
transformer = Transformer(
transformers = [
('DiffTransform',1),
('DiffTransform',12),
],
)
reverter = Reverter(
# list reverters in reverse order
reverters = [
('DiffRevert',12),
('DiffRevert',1),
],
base_transformer = transformer,
)
pipeline = Pipeline(
steps = [
('Transform',transformer),
('Forecast',forecaster),
('Revert',reverter),
],
)
f = pipeline.fit_predict(f,models=models)
f.plot(
ci=True, # setting this to True will not throw an error if there are no confidence intervals
order_by='TestSetMAPE',
)
plt.legend(loc = 'upper left')
plt.show()
# export results
results = f.export(
[
'model_summaries', # info about hyperparams, xvars, scaling, erros, etc.
'all_fcsts', # point forecasts
],
cis = True, # confidence intervals placed on point forecasts
)
Installation
- Only the base package is needed to get started:
pip install --upgrade scalecast
- Optional add-ons:
pip install tensorflow
(for RNN/LSTM on Windows) orpip install tensorflow-macos
(for MAC/M1)pip install darts
pip install prophet
pip install greykite
(for the silverkite model)pip install shap
(SHAP feature importance)pip install kats
(changepoint detection)pip install pmdarima
(auto arima)pip install tqdm
(progress bar for notebook)pip install ipython
(widgets for notebook)pip install ipywidgets
(widgets for notebook)jupyter nbextension enable --py widgetsnbextension
(widgets for notebook)jupyter labextension install @jupyter-widgets/jupyterlab-manager
(widgets for Lab)
Features and Articles
Forecasting with Different Model Types
- Sklearn Univariate
- Sklearn Multivariate
- RNN
- ARIMA
- Theta
- VECM
- Other Notebooks
Transforming and Reverting
Confidence Intervals
Dynamic Validation
Model Input Selection
- Variable Reduction Techniques for Time Series
- Auto Model Specification with ML Techniques for Time Series
- Notebook 1
- Notebook 2
Scaled Forecasting on Many Series
Anomaly Detection
Contributing
- Contributing.md
- Want something that's not listed? Open an issue!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
SCALECAST-0.17.4.tar.gz
(709.9 kB
view hashes)