PyTorch-Forecasting一个新的时间序列预测库

开发 前端
时间序列预测在金融、天气预报、销售预测和需求预测等各个领域发挥着至关重要的作用。PyTorch- forecasting是一个建立在PyTorch之上的开源Python包,专门用于简化和增强时间序列的工作。在本文中我们介绍PyTorch-Forecasting的特性和功能,并进行示例代码演示。

时间序列预测在金融、天气预报、销售预测和需求预测等各个领域发挥着至关重要的作用。PyTorch- forecasting是一个建立在PyTorch之上的开源Python包,专门用于简化和增强时间序列的工作。在本文中我们介绍PyTorch-Forecasting的特性和功能,并进行示例代码演示。

图片

PyTorch-Forecasting的安装非常简单:

pip install pytorch-forecasting

但是需要注意的是,他目前现在只支持Pytorch 1.7以上,但是2.0是否支持我没有测试。

PyTorch-Forecasting提供了几个方面的功能:

1、提供了一个高级接口,抽象了时间序列建模的复杂性,可以使用几行代码来定义预测任务,使得使用不同的模型和技术进行实验变得容易。

2、支持多个预测模型,包括自回归模型(AR, ARIMA),状态空间模型(SARIMAX),神经网络(LSTM, GRU)和集成方法(Prophet, N-Beats)。这种多样化的模型集确保了为您的时间序列数据选择最合适方法的灵活性。

3、提供各种数据预处理工具来处理常见的时间序列任务,包括:缺失值输入、缩放、特征提取和滚动窗口转换等。除了一些数据的预处理的工具外,还提供了一个名为 TimeSeriesDataSet 的Pytorch的DS,这样可以方便的处理时间序列数据。

4、通过统一的接口方便模评估:实现了QuantileLoss,SMAPE 等时间序列的损失函数和验证指标,支持Pytorch Lighting 这样可以直接使用早停和交叉验证等训练方法

使用方法也很简单:

from pytorch_forecasting import TimeSeriesDataSet, TemporalFusionTransformer
 
 # Load and preprocess the data
 dataset = TimeSeriesDataSet.from_csv('data.csv', target='target', time_idx='time', group_ids=['id'])
 dataset.prepare_training(split_into_train_val_test=[0.8, 0.1, 0.1])
 
 # Initialize and train the model
 model = TemporalFusionTransformer.from_dataset(dataset)
 trainer = pl.Trainer()
 trainer.fit(model, dataset.train_dataloader())
 
 # Generate predictions
 predictions = model.predict(dataset.test_dataloader())
 
 # Evaluate the model
 metric = dataset.target_normalizer.metrics['mse']
 print(f'Test MSE: {metric(predictions, dataset.test_dataloader())}')

如果需要分类编码,可以这样用:

from pytorch_forecasting.data import GroupNormalizer
 
 # Load and preprocess the data with categorical variables
 dataset = TimeSeriesDataSet.from_pandas(data, target='target', time_idx='time', group_ids=['id'],
                                         categorical_encoders={'cat_variable': GroupNormalizer()})
 dataset.prepare_training(...)
 
 # Initialize and train the model
 model = TemporalFusionTransformer.from_dataset(dataset)
 trainer.fit(model, dataset.train_dataloader())
 
 # Generate predictions
 predictions = model.predict(dataset.test_dataloader())
 
 # Evaluate the model
 print(f'Test MSE: {metric(predictions, dataset.test_dataloader())}')

PyTorch-Forecasting是一个非常好用的工具包,就算你不使用它所有的功能,也可以将他提供的一些功能当作巩工具来整合到自己的项目中,如果你对使用PyTorch处理时序数据感兴趣,也可以看看他的代码当作学习的参考,他的文档还是比较全面的,并且也提供了很多的示例。

有兴趣的看看官方的文档和代码示例:

https://pytorch-forecasting.readthedocs.io/en/stable/index.html

责任编辑:华轩 来源: DeepHub IMBA
相关推荐

2024-02-27 17:32:30

时间序列分析库PyTimeTK数据科学

2019-06-12 08:23:21

数据库时间序列开源

2024-01-30 01:12:37

自然语言时间序列预测Pytorch

2024-05-09 16:23:14

2023-10-13 15:34:55

时间序列TimesNet

2022-07-15 16:14:39

深度学习时间序列理论

2024-06-27 16:38:57

2021-08-05 13:49:39

Python工具开发

2022-08-16 09:00:00

机器学习人工智能数据库

2023-12-31 16:35:31

Pytorch函数深度学习

2015-05-08 12:41:36

C++序列化反序列化库Kapok

2023-11-06 07:27:38

模型NLP领域

2021-07-01 21:46:30

PythonHot-Winters数据

2021-04-07 10:02:00

XGBoostPython代码

2021-07-02 10:05:45

PythonHot-winters指数平滑

2024-07-18 13:13:58

2017-11-20 11:51:40

KerasLSTM深度学习

2023-01-30 17:10:23

DeepTime元学习

2011-12-14 15:53:51

云计算

2023-03-16 18:09:00

机器学习数据集
点赞
收藏

51CTO技术栈公众号