195 lines
7.7 KiB
Plaintext
195 lines
7.7 KiB
Plaintext
Metadata-Version: 2.1
|
|
Name: pmdarima
|
|
Version: 2.0.4
|
|
Summary: Python's forecast::auto.arima equivalent
|
|
Home-page: http://alkaline-ml.com/pmdarima
|
|
Download-URL: https://pypi.org/project/pmdarima/#files
|
|
Maintainer: Taylor G. Smith
|
|
Maintainer-email: taylor.smith@alkaline-ml.com
|
|
License: MIT
|
|
Project-URL: Bug Tracker, https://github.com/alkaline-ml/pmdarima/issues
|
|
Project-URL: Documentation, http://alkaline-ml.com/pmdarima
|
|
Project-URL: Source Code, https://github.com/alkaline-ml/pmdarima
|
|
Keywords: arima timeseries forecasting pyramid pmdarima pyramid-arima scikit-learn statsmodels
|
|
Classifier: Intended Audience :: Science/Research
|
|
Classifier: Intended Audience :: Developers
|
|
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
Classifier: Programming Language :: C
|
|
Classifier: Programming Language :: Python
|
|
Classifier: Topic :: Software Development
|
|
Classifier: Topic :: Scientific/Engineering
|
|
Classifier: Operating System :: Microsoft :: Windows
|
|
Classifier: Operating System :: POSIX
|
|
Classifier: Operating System :: Unix
|
|
Classifier: Operating System :: MacOS
|
|
Classifier: Programming Language :: Python :: 3
|
|
Classifier: Programming Language :: Python :: 3.7
|
|
Classifier: Programming Language :: Python :: 3.8
|
|
Classifier: Programming Language :: Python :: 3.9
|
|
Classifier: Programming Language :: Python :: 3.10
|
|
Classifier: Programming Language :: Python :: 3.11
|
|
Classifier: Programming Language :: Python :: 3.12
|
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
Requires-Python: >=3.7
|
|
Description-Content-Type: text/markdown
|
|
License-File: LICENSE
|
|
License-File: AUTHORS.md
|
|
Requires-Dist: joblib >=0.11
|
|
Requires-Dist: Cython !=0.29.18,!=0.29.31,>=0.29
|
|
Requires-Dist: numpy >=1.21.2
|
|
Requires-Dist: pandas >=0.19
|
|
Requires-Dist: scikit-learn >=0.22
|
|
Requires-Dist: scipy >=1.3.2
|
|
Requires-Dist: statsmodels >=0.13.2
|
|
Requires-Dist: urllib3
|
|
Requires-Dist: setuptools !=50.0.0,>=38.6.0
|
|
Requires-Dist: packaging >=17.1
|
|
|
|
# pmdarima
|
|
|
|
[](https://badge.fury.io/py/pmdarima)
|
|
[](https://circleci.com/gh/alkaline-ml/pmdarima)
|
|
[](https://github.com/alkaline-ml/pmdarima/actions?query=workflow%3A%22Mac+and+Windows+Builds%22+branch%3Amaster)
|
|
[](https://codecov.io/gh/alkaline-ml/pmdarima)
|
|

|
|

|
|

|
|
|
|
Pmdarima (originally `pyramid-arima`, for the anagram of 'py' + 'arima') is a statistical
|
|
library designed to fill the void in Python's time series analysis capabilities. This includes:
|
|
|
|
* The equivalent of R's [`auto.arima`](https://www.rdocumentation.org/packages/forecast/versions/7.3/topics/auto.arima) functionality
|
|
* A collection of statistical tests of stationarity and seasonality
|
|
* Time series utilities, such as differencing and inverse differencing
|
|
* Numerous endogenous and exogenous transformers and featurizers, including Box-Cox and Fourier transformations
|
|
* Seasonal time series decompositions
|
|
* Cross-validation utilities
|
|
* A rich collection of built-in time series datasets for prototyping and examples
|
|
* Scikit-learn-esque pipelines to consolidate your estimators and promote productionization
|
|
|
|
Pmdarima wraps [statsmodels](https://github.com/statsmodels/statsmodels/blob/master/statsmodels)
|
|
under the hood, but is designed with an interface that's familiar to users coming
|
|
from a scikit-learn background.
|
|
|
|
## Installation
|
|
|
|
### pip
|
|
|
|
Pmdarima has binary and source distributions for Windows, Mac and Linux (`manylinux`) on pypi
|
|
under the package name `pmdarima` and can be downloaded via `pip`:
|
|
|
|
```bash
|
|
pip install pmdarima
|
|
```
|
|
|
|
### conda
|
|
|
|
Pmdarima also has Mac and Linux builds available via `conda` and can be installed like so:
|
|
|
|
```bash
|
|
conda config --add channels conda-forge
|
|
conda config --set channel_priority strict
|
|
conda install pmdarima
|
|
```
|
|
|
|
**Note:** We do not maintain our own Conda binaries, they are maintained at https://github.com/conda-forge/pmdarima-feedstock.
|
|
See that repo for further documentation on working with Pmdarima on Conda.
|
|
|
|
## Quickstart Examples
|
|
|
|
Fitting a simple auto-ARIMA on the [`wineind`](https://alkaline-ml.com/pmdarima/modules/generated/pmdarima.datasets.load_wineind.html#pmdarima.datasets.load_wineind) dataset:
|
|
|
|
```python
|
|
import pmdarima as pm
|
|
from pmdarima.model_selection import train_test_split
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
# Load/split your data
|
|
y = pm.datasets.load_wineind()
|
|
train, test = train_test_split(y, train_size=150)
|
|
|
|
# Fit your model
|
|
model = pm.auto_arima(train, seasonal=True, m=12)
|
|
|
|
# make your forecasts
|
|
forecasts = model.predict(test.shape[0]) # predict N steps into the future
|
|
|
|
# Visualize the forecasts (blue=train, green=forecasts)
|
|
x = np.arange(y.shape[0])
|
|
plt.plot(x[:150], train, c='blue')
|
|
plt.plot(x[150:], forecasts, c='green')
|
|
plt.show()
|
|
```
|
|
|
|
<img src="http://alkaline-ml.com/img/static/pmdarima_readme_example1.png" alt="Wineind example"/>
|
|
|
|
|
|
Fitting a more complex pipeline on the [`sunspots`](https://www.rdocumentation.org/packages/datasets/versions/3.6.1/topics/sunspots) dataset,
|
|
serializing it, and then loading it from disk to make predictions:
|
|
|
|
```python
|
|
import pmdarima as pm
|
|
from pmdarima.model_selection import train_test_split
|
|
from pmdarima.pipeline import Pipeline
|
|
from pmdarima.preprocessing import BoxCoxEndogTransformer
|
|
import pickle
|
|
|
|
# Load/split your data
|
|
y = pm.datasets.load_sunspots()
|
|
train, test = train_test_split(y, train_size=2700)
|
|
|
|
# Define and fit your pipeline
|
|
pipeline = Pipeline([
|
|
('boxcox', BoxCoxEndogTransformer(lmbda2=1e-6)), # lmbda2 avoids negative values
|
|
('arima', pm.AutoARIMA(seasonal=True, m=12,
|
|
suppress_warnings=True,
|
|
trace=True))
|
|
])
|
|
|
|
pipeline.fit(train)
|
|
|
|
# Serialize your model just like you would in scikit:
|
|
with open('model.pkl', 'wb') as pkl:
|
|
pickle.dump(pipeline, pkl)
|
|
|
|
# Load it and make predictions seamlessly:
|
|
with open('model.pkl', 'rb') as pkl:
|
|
mod = pickle.load(pkl)
|
|
print(mod.predict(15))
|
|
# [25.20580375 25.05573898 24.4263037 23.56766793 22.67463049 21.82231043
|
|
# 21.04061069 20.33693017 19.70906027 19.1509862 18.6555793 18.21577243
|
|
# 17.8250318 17.47750614 17.16803394]
|
|
```
|
|
|
|
|
|
### Availability
|
|
|
|
`pmdarima` is available on PyPi in pre-built Wheel files for Python 3.7+ for the following platforms:
|
|
|
|
* Mac (64-bit)
|
|
* Linux (64-bit manylinux)
|
|
* Windows (64-bit)
|
|
* 32-bit wheels are available for pmdarima versions below 2.0.0 and Python versions below 3.10
|
|
|
|
If a wheel doesn't exist for your platform, you can still `pip install` and it
|
|
will build from the source distribution tarball, however you'll need `cython>=0.29`
|
|
and `gcc` (Mac/Linux) or `MinGW` (Windows) in order to build the package from source.
|
|
|
|
Note that legacy versions (<1.0.0) are available under the name
|
|
"`pyramid-arima`" and can be pip installed via:
|
|
|
|
```bash
|
|
# Legacy warning:
|
|
$ pip install pyramid-arima
|
|
# python -c 'import pyramid;'
|
|
```
|
|
|
|
However, this is not recommended.
|
|
|
|
## Documentation
|
|
|
|
All of your questions and more (including examples and guides) can be answered by
|
|
the [`pmdarima` documentation](https://www.alkaline-ml.com/pmdarima). If not, always
|
|
feel free to file an issue.
|