Apache License 2.0

项目介绍

Nixtla/neuralforecast 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,采用 Apache License 2.0 许可证,目前获得 4.3k 个 Star、526 次 Fork。

仓库全名
Nixtla/neuralforecast
开源许可证
Apache License 2.0
Star 数
4.3k
Fork 数
526
未关闭 Issue
96

README 摘要

Nixtla Neural 🧠 Forecast User friendly state-of-the-art neural forecasting models NeuralForecast offers a large collection of neural forecasting models focusing on their performance, usability, and robustness. The models range from classic networks like RNNs to the latest transformers: MLP, LSTM, GRU, RNN, TCN, TimesNet, BiTCN, DeepAR, NBEATS, NBEATSx, NHITS, TiDE, DeepNPTS, TSMixer, TSMixerx, MLPMultivariate,…

完整内容见 GitHub 原始 README 或本页 。

常见问题

neuralforecast 用什么语言开发?

主要使用 Python 编写,采用 Apache License 2.0 许可证,目前有 4.3k 个 Star。

neuralforecast 可以免费商用吗?

仓库采用 Apache License 2.0 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 neuralforecast 的源码?

可以直接克隆仓库:git clone https://github.com/Nixtla/neuralforecast.git,默认分支为 main;安装与运行步骤见仓库 README。

neuralforecast 最近还在维护吗?

仓库最近一次更新为 1 天前,当前有 96 个未关闭 Issue;Star 数为 4.3k,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Scalable and user friendly neural :brain: forecasting algorithms.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Jupyter Notebook
Makefile
Python
Shell

Release

README

Nixtla

Tweet Slack

Neural 🧠 Forecast

User friendly state-of-the-art neural forecasting models

pytest Python PyPi conda-nixtla License docs

All Contributors

NeuralForecast offers a large collection of neural forecasting models focusing on their performance, usability, and robustness. The models range from classic networks like RNNs to the latest transformers: MLP, LSTM, GRU, RNN, TCN, TimesNet, BiTCN, DeepAR, NBEATS, NBEATSx, NHITS, TiDE, DeepNPTS, TSMixer, TSMixerx, MLPMultivariate, DLinear, NLinear, TFT, Informer, AutoFormer, FedFormer, PatchTST, iTransformer, StemGNN, and TimeLLM.

Installation

You can install NeuralForecast with:

pip install neuralforecast

or

conda install -c conda-forge neuralforecast

Vist our Installation Guide for further details.

Quick Start

Minimal Example

from neuralforecast import NeuralForecast
from neuralforecast.models import NBEATS
from neuralforecast.utils import AirPassengersDF

nf = NeuralForecast(
    models = [NBEATS(input_size=24, h=12, max_steps=100)],
    freq = 'ME'
)

nf.fit(df=AirPassengersDF)
nf.predict()

Get Started with this quick guide.

Why?

There is a shared belief in Neural forecasting methods’ capacity to improve forecasting pipeline’s accuracy and efficiency.

Unfortunately, available implementations and published research are yet to realize neural networks’ potential. They are hard to use and continuously fail to improve over statistical methods while being computationally prohibitive. For this reason, we created NeuralForecast, a library favoring proven accurate and efficient models focusing on their usability.

Features

  • Fast and accurate implementations of more than 30 state-of-the-art models. See the entire collection here.
  • Support for exogenous variables and static covariates.
  • Interpretability methods for trend, seasonality and exogenous components.
  • Probabilistic Forecasting with adapters for quantile losses and parametric distributions.
  • Train and Evaluation Losses with scale-dependent, percentage and scale independent errors, and parametric likelihoods.
  • Automatic Model Selection with distributed automatic hyperparameter tuning.
  • Familiar sklearn syntax: .fit and .predict.

Highlights

  • Official NHITS implementation, published at AAAI 2023. See paper and experiments.
  • Official NBEATSx implementation, published at the International Journal of Forecasting. See paper.
  • Unified withStatsForecast, MLForecast, and HierarchicalForecast interface NeuralForecast().fit(Y_df).predict(), inputs and outputs.
  • Built-in integrations with utilsforecast and coreforecast for visualization and data-wrangling efficient methods.
  • Integrations with Ray and Optuna for automatic hyperparameter optimization.
  • Predict with little to no history using Transfer learning. Check the experiments here.

Missing something? Please open an issue or write us in Slack

Examples and Guides

The documentation page contains all the examples and tutorials.

📈 Automatic Hyperparameter Optimization: Easy and Scalable Automatic Hyperparameter Optimization with Auto models on Ray or Optuna.

🌡️ Exogenous Regressors: How to incorporate static or temporal exogenous covariates like weather or prices.

🔌 Transformer Models: Learn how to forecast with many state-of-the-art Transformers models.

👑 Hierarchical Forecasting: forecast series with very few non-zero observations.

👩‍🔬 Add Your Own Model: Learn how to add a new model to the library.

Saving and loading models

From 3.3.0 a saved directory holds safetensors weights and JSON metadata, and is loaded without executing any code it contains. Earlier versions used pickle, which runs arbitrary code from the artifact on load, so the legacy format is now opt-in:

nf.save('./checkpoints/')                      # writes the new format
nf2 = NeuralForecast.load('./checkpoints/')    # no pickle, no code execution

What changed, if you have artifacts or code from an earlier version:

  • Older directories need consent or conversion. Pass allow_pickle=True to read one in place, which executes code contained in it, or convert it once with python -m neuralforecast.migrate ./old_checkpoints/. A directory saved with save_dataset=True must be converted — its dataset has no safe reader.
  • Remote paths are opt-in. NeuralForecast.load('s3://bucket/models/', trust_remote=True), because whoever can write that location chooses what runs on the loading machine.
  • Custom losses, optimizers and schedulers must be registered with register_loss, register_optimizer or register_lr_scheduler, in the process that loads as well as the one that saves.
  • TimeLLM can no longer be saved or loaded. It resolves its llm argument through from_pretrained while being constructed, so an artifact could direct that fetch. Train and predict with it in the same process.

The save and load guide covers this in full.

Models

See the entire collection here.

Missing a model? Please open an issue or write us in Slack

How to contribute

If you wish to contribute to the project, please refer to our contribution guidelines.

References

This work is highly influenced by the fantastic work of previous contributors and other scholars on the neural forecasting methods presented here. We want to highlight the work of Boris Oreshkin, Slawek Smyl, Bryan Lim, and David Salinas. We refer to Benidis et al. for a comprehensive survey of neural forecasting methods.

🙏 How to cite

If you enjoy or benefit from using these Python implementations, a citation to the repository will be greatly appreciated.

@misc{olivares2022library_neuralforecast,
    author={Kin G. Olivares and
            Cristian Challú and
            Azul Garza and
            Max Mergenthaler Canseco and
            Artur Dubrawski},
    title = {{NeuralForecast}: User friendly state-of-the-art neural forecasting models.},
    year={2022},
    howpublished={{PyCon} Salt Lake City, Utah, US 2022},
    url={https://github.com/Nixtla/neuralforecast}
}

Contributors ✨

Thanks goes to these wonderful people (emoji key):

azul
azul

💻 🚧
Cristian Challu
Cristian Challu

💻 🚧
José Morales
José Morales

💻 🚧
mergenthaler
mergenthaler

📖 💻
Kin
Kin

💻 🐛 🔣
Greg DeVos
Greg DeVos

🤔
Alejandro
Alejandro

💻
stefanialvs
stefanialvs

🎨
Ikko Ashimine
Ikko Ashimine

🐛
vglaucus
vglaucus

🐛
Pietro Monticone
Pietro Monticone

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

评论

暂无评论