Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tymefighter/forecast


https://github.com/tymefighter/forecast

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

[![Build Status](https://www.travis-ci.com/tymefighter/Forecast.svg?branch=master)](https://www.travis-ci.com/tymefighter/Forecast.svg?branch=master)

# Time Series Forecasting Package

This is a `python` package containing Various Forecasting Algorithms,
Forecasting Datasets and, Plotting, Preprocessing and Utility Tools.

## Forecasting Algorithms

This package provides (or would provide) various algorithms which work
on data containing multivariate target time series, univariate target
time series - both with or without exogenous time series. The algorithms
are provided in the `model` subpackage of the time series package `ts`.

Currently, this package provides the following Forecasting Algorithms,

- MLP (DNN) based multivariate forecasting algorithm which has support
for exogenous time series. You may import this in your application by
doing as follows

```
from ts.model import DeepNN
```

- RNN based multivariate forecasting algorithm with support for multivariate
exogenous time series. This is a recurrent model which takes in any
recurrent layer (and parameters) and stacks it required number of times.

```
from ts.model import RnnForecast
```

- Simple RNN based multivariate forecasting algorithm with support for multivariate
exogenous time series. This model is built by stacking multiple simple RNN layers.

```
from ts.model import SimpleRnnForecast
```

- GRU based multivariate forecasting algorithm with support for multivariate
exogenous time series. This model is built by stacking multiple GRU layers.

```
from ts.model import GruForecast
```

- LSTM based multivariate forecasting algorithm with support for multivariate
exogenous time series. This model is built by stacking multiple LSTM layers.

```
from ts.model import LstmForecast
```

- The Extreme Time Model - which focuses on forecasting target series with
extreme values - i.e. values which have a very large deviation from the
time series trend. It supports univariate time series and multivariate
exogenous time series.

```
from ts.model import ExtremeTime
```

- The Extreme Time Model 2 - It is another model focussed on forecasting
time series with extreme values. It supports univariate time series and
multivariate exogenous time series.

```
from ts.model import ExtremeTime2
```

- A GMM-HMM based forecasting model which predicts by finding maximum
posterior probability over a discrete set of observation values (since
maximum over the contiuous observation space seems infeasible)

```
from ts.model import GmmHmmForecast
```

- A GMM-HMM based forecasting model which predicts by finding the
observation in the training set which is has closest log likelihood
value to the current observation's log likelihood value

```
from ts.model import GmmHmmLikelihoodSimilarity
```

## Forecasting Data

This package provides Data Generators as well as Datasets. The `data`
subpackage of the time series package `ts` provides two subpackages
named `generate` and `dataset`, the first one contains data generators
and the second one contains real world datasets.

Currently, we provide the following,

- ARMA Generated data - generates only univariate target series
without support for exogenous series.

```
from ts.model.univariate.nonexo import ArmaGenerator
```

- Standard Generators - provides generators for simple data, long
term dependency data and extreme valued data

```
from ts.model.univariate.nonexo import StandardGenerator
```

- Periodic Generator - generates periodic data but with support for
only univariate target series without exogenous series.

```
from ts.model.univariate.nonexo import PeriodicGenerator
```

- Polynomial Generator - generates data which is a polynomial function
of time. This allows one to generate data with a varying trend.

```
from ts.model.univariate.nonexo import PolynomialGenerator
```

- Difficult Generator - generates difficult data, i.e. data which has
a varying trend, periodicity (seasonality) and noise (ARMA). One
can introduce extreme values into the data by providing the appropriate
contructor arguments

```
from ts.model.univariate.nonexo import DifficultGenerator
```

## Plotting, Preprocessing and Utility Tools

This package contains plotting tools for plotting losses, plotting training
data and comparing prediction with true (using plots). The plotting tools
are available in the `plot` subpackage of the time series package `ts`.
It also provides utility tools for in the `utility` subpackage of `ts`.
Access to the global logger and local loggers is provided in the `log`
subpackage of `ts`.

## Package Structure

```
ts/
|__ data/
| |__ dataset/
| |__ AmazonStockPrice
| |__ RetailSales
| |__ JaipurWeather
|
| |__ generate/
| |__ univariate/
| |__ nonexo/
| |__ ArmaGenerator
| |__ StandardGenerator
| |__ PeriodicGenerator
| |__ PolynomialGenerator
| |__ DifficultGenerator
|
|__ model/
| |__ RnnForecast
| |__ SimpleRnnForecast
| |__ GruForecast
| |__ LstmForecast
| |__ DeepNN
| |__ ExtremeTime
| |__ ExtremeTime2
| |__ GmmHmmForecast
| |__ GmmHmmLikelihoodSimilarity
|
|__ plot/
| |__ Plot
|
|__ log/
| |__ ConsoleLogger
| |__ FileLogger
| |__ GlobalLogger
|
|__ test/
| |__ model/..
| |__ utility/..
|
|__ utility/
| |__ Utility
| |__ ForecastDataSequence
| |__ SaveCallback
| |__ DatasetUtility
| |__ Metric
```

## Repository Structure

This repository is structured as follows:

```
Forecast
|__ other/...
|
|__ notebooks/..
|
|__ ts/...
```

- `other`: contains deprecated codes and codes that do not work.
The contents of this directory would be removed as soon as
they have been analyzed thoroughly.

- `notebooks`: contains notebooks containing experiments, tests and examples

- `ts`: The time series forecasting package

## Existing experiments, tests and example notebooks

The `notebooks` directory of this repository contains notebooks
containing experiments, tests and examples. To be able to run
these notebooks, we need to do as follows:

1. Go to your .bashrc file and add the following line:
```
export PYTHONPATH="$PYTHONPATH:"
```

where `` is the location of this repository
in your filesystem.