pytorch-forecasting
基于PyTorch的时序预测框架,内置TFT/N-BEATS等15+预置模型,自动处理数据管道与GP
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于PyTorch的时序预测框架,内置TFT/N-BEATS等15+预置模型,自动处理数据管道与GP
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你要预测明天的股票走势、下周的用电量、下个月的供应链需求——这些数据有一个共同点:它们随时间变化。传统的机器学习方法需要工程师手工提取趋势、季节性、节假日等特征,而 PyTorch Forecasting 的出现,就是为了把这件事变得更聪明、更自动化。
这个由 sktime 社区维护的 Python 库,把深度学习的强大能力引入时序预测领域,让数据科学家无需从零构建 PyTorch 模型,也能用上 Temporal Fusion Transformer、N-BEATS、DeepAR 等前沿架构。它就像给时序预测装上了一个「高级工具箱」,底层是 PyTorch,上层是友好的 API。
时序预测在金融、能源、零售、供应链等领域有着广泛需求。传统方法如 ARIMA、Prophet 需要对数据特性做大量假设,扩展性有限。2017 年之后,深度学习在 NLP 和 CV 领域取得突破,学界开始尝试将 Transformer、RNN 等架构应用于时序数据。
PyTorch Forecasting 正是在这一背景下诞生,核心作者 Jan Beitner 联合 sktime 社区,希望打造一个兼顾科研创新与工业实用的时序预测框架。它不是简单封装 PyTorch,而是围绕时序预测的全流程设计了数据管道、损失函数、评估指标和预训练模型。
可以把 PyTorch Forecasting 想象成一个翻译官:你告诉它你的数据长什么样(时间、特征、目标变量),它帮你翻译成 PyTorch 模型能理解的格式,并选择合适的预测架构来训练和推理。就像你去医院检查,化验单是「翻译」后的结果,而 PyTorch Forecasting 就是那个帮你准备化验单的助手——不是替代医生下诊断,而是让医生能更高效地工作。
核心抽象是 TimeSeriesDataSet:你只需要告诉它时间索引、已知未来变量、静态变量等,它自动处理滑动窗口、数据归一化、缺失值填充等繁琐工作。
PyTorch Forecasting 内置超过 15 种 预测模型,覆盖多种架构范式:
| 模型 | 架构类型 | 适用场景 |
|---|---|---|
| Temporal Fusion Transformer (TFT) | Transformer | 多变量、解释性强、含已知未来变量 |
| DeepAR | RNN (LSTM) | 概率预测、稀疏数据 |
| N-BEATS | 深度残差网络 | 单变量、可解释性 |
| NHiTS | 多尺度分层网络 | 多频率混合数据 |
| DLinear | 线性网络 | 简单基线、对抗复杂模型 |
| xLSTM | 改进版 LSTM | 长序列依赖 |
| TimeXer | Transformer + 时序嵌入 | 异构特征融合 |
| SAMformer | 混合注意力 | 精准长期预测 |
TimeSeriesDataSet 是整个库的核心数据抽象,支持:
数据模块与 PyTorch Lightning 无缝集成,一行代码即可切换 CPU/GPU 训练。
预测金融或供应链数据时,点预测往往不够——需要知道不确定性区间。PyTorch Forecasting 内置:
集成 Optuna 自动调参,结合 PyTorch Lightning 的日志系统,可以追踪每个实验的指标曲线。
支持 pip 和 conda 安装(注意 Python 版本需 3.10-3.14):
pip install pytorch-forecasting
基础使用三步走:
import pytorch_forecasting as pf
# 1. 准备数据(包装成 TimeSeriesDataSet)
train_dataset = pf.TimeSeriesDataSet(
data,
time_idx="date",
target="sales",
group_ids=["store", "item"],
max_encoder_length=30,
max_prediction_length=7,
)
# 2. 包装成 Lightning DataModule
train_dataloader = train_dataset.to_dataloader(train=True, batch_size=64)
# 3. 训练模型
model = pf.TemporalFusionTransformer.from_dataset(train_dataset)
trainer = pf.Trainer(max_epochs=10)
trainer.fit(model, train_dataloader)
PyTorch Forecasting 没有图形界面,所有操作通过 Python API 完成。配套的 Jupyter Notebook 示例(Stallion 啤酒销量预测、N-BEATS 股价预测等)是最好的上手材料。对于习惯可视化操作的用户,需要额外学习成本。
训练自动支持 GPU,只需 trainer.fit(..., accelerator="gpu"),无需手动 tensor 迁移。
PyTorch Forecasting 代表着时序预测民主化的趋势:让更多数据科学家能用上原本只有大厂才能训练的复杂模型。其对 TFT、N-BEATS 等模型的工程化实现降低了前沿研究的落地门槛。
从增长曲线看,该项目 GitHub 4906 stars、866 forks、754 open issues,说明社区活跃但也有大量待解决问题。与 sktime 主项目(统计学习为主)形成互补,前者擅长简单可解释模型,后者擅长深度学习规模化训练。两者结合可覆盖从探索到生产的完整链路。