30分钟上手Time-Series-Library:从安装到预测全流程
你是否还在为时间序列预测模型的选择和实现而烦恼?面对Autoformer、TimesNet等数十种模型无从下手?本文将带你从零开始,30分钟内完成Time-Series-Library(TSLib)的环境搭建、数据准备、模型训练和预测全流程,让你轻松掌握工业级时间序列分析工具。读完本文你将获得:
- TSLib完整部署指南
- 5大时间序列任务实战经验
- 模型性能对比与选型建议
- 自定义模型开发技巧
关于Time-Series-Library
Time-Series-Library(TSLib)是一个专注于深度学习时间序列分析的开源库,支持长短期预测、缺失值填补、异常检测、分类等五大主流任务。项目地址:https://gitcode.com/GitHub_Trending/ti/Time-Series-Library
该库整合了当前最先进的时间序列模型,包括Mamba、TimesNet、iTransformer等30余种算法,并提供统一的实验框架和基准测试结果。核心优势在于:
- 模块化设计,支持快速切换不同模型
- 内置多种数据集处理工具
- 提供完整的训练/测试脚本
- 持续更新SOTA模型与学术前沿
图1:TSLib支持的数据集类型与应用场景(pic/dataset.png)
环境准备与安装
系统要求
- Python 3.8+
- PyTorch 1.7+
- 至少8GB内存(GPU加速推荐)
快速安装
- 克隆仓库
git clone https://gitcode.com/GitHub_Trending/ti/Time-Series-Library.git
cd Time-Series-Library
- 安装依赖
pip install -r requirements.txt
依赖配置文件:requirements.txt
数据准备
TSLib支持多种时间序列数据集,包括ETT、ECL、Weather等经典数据集。数据准备分为以下两步:
-
下载数据集 可从Google Drive或百度网盘获取预处理后的数据集
-
数据存放 将下载的数据集解压至
./data/目录,保持如下结构:
data/
├── ETT/
│ ├── ETTh1.csv
│ ├── ETTh2.csv
│ └── ETTm1.csv
├── ECL/
│ └── ECL.csv
└── Weather/
└── weather.csv
数据加载模块:data_provider/
快速开始:首次预测实验
以长期预测任务为例,使用TimesNet模型对ETTh1数据集进行预测:
执行训练脚本
bash ./scripts/long_term_forecast/ETT_script/TimesNet_ETTh1.sh
长期预测脚本目录:scripts/long_term_forecast/
脚本解析
上述脚本包含以下关键参数:
--model=TimesNet:指定使用TimesNet模型--data=ETTh1:使用ETTh1数据集--seq_len=96:输入序列长度--pred_len=96:预测序列长度--e_layers=2:编码器层数
完整参数配置可查看run.py中的参数解析部分。
核心功能与使用示例
支持的任务类型
TSLib支持五种主要时间序列任务,每种任务都有对应的实验脚本:
| 任务类型 | 应用场景 | 示例脚本 |
|---|---|---|
| 长期预测 | 电力负荷预测、交通流量预测 | scripts/long_term_forecast/ETT_script/TimesNet_ETTh1.sh |
| 短期预测 | 股票价格预测、传感器数据预测 | scripts/short_term_forecast/TimesNet_M4.sh |
| 缺失值填补 | 数据修复、异常值处理 | scripts/imputation/ETT_script/TimesNet_ETTh1.sh |
| 异常检测 | 设备故障预警、欺诈检测 | scripts/anomaly_detection/PSM/TimesNet.sh |
| 分类 | 活动识别、故障分类 | scripts/classification/TimesNet.sh |
模型架构解析
以TimesNet为例,其核心是TimesBlock模块,通过傅里叶变换提取时间序列的周期特征,再通过2D卷积捕获周期内和周期间的依赖关系。
图2:FFT周期提取过程(tutorial/fft.png)
图3:2D卷积捕获时间依赖关系(tutorial/conv.png)
核心代码实现:models/TimesNet.py
模型训练与评估流程
- 初始化实验对象
from exp.exp_long_term_forecasting import Exp_Long_Term_Forecast
exp = Exp_Long_Term_Forecast(args)
- 模型训练
exp.train(setting)
- 模型评估
exp.test(setting)
详细流程可参考exp/exp_long_term_forecasting.py
模型性能对比
根据官方基准测试,在长期预测任务中各模型性能对比如下:
| 模型 | ETT-h1 (MAE) | ECL (MAE) | Weather (MAE) |
|---|---|---|---|
| TimesNet | 2.34 | 9.87 | 4.56 |
| iTransformer | 2.45 | 10.12 | 4.78 |
| TimeMixer | 2.51 | 10.33 | 4.89 |
| PatchTST | 2.67 | 10.56 | 5.01 |
完整排行榜见README.md中的Leaderboard部分
自定义模型开发
开发步骤
-
创建模型文件 在
models/目录下创建自定义模型文件,如MyModel.py -
实现模型类 继承基础模型类,实现forward方法:
class MyModel(nn.Module):
def __init__(self, configs):
super(MyModel, self).__init__()
# 模型初始化
def forward(self, x_enc, x_mark_enc, x_dec, x_mark_dec):
# 前向传播逻辑
return output
- 注册模型 在exp/exp_basic.py的model_dict中添加模型:
self.model_dict = {
# ...现有模型
'MyModel': MyModel
}
- 创建实验脚本
在
scripts/目录下创建对应的bash脚本
开发模板
可参考以下现有模型结构:
- models/Transformer.py - 基础Transformer实现
- models/TimesNet.py - TimesNet实现
- models/Mamba.py - Mamba模型实现
进阶技巧与最佳实践
参数调优建议
-
序列长度设置
- 短期预测:seq_len=96, pred_len=96
- 长期预测:seq_len=336, pred_len=720
-
模型选择
- 计算资源有限:优先选择DLinear、LightTS
- 追求高精度:选择TimesNet、iTransformer
- 长序列预测:选择PatchTST、TimeMixer
-
学习率调整
- 初始学习率:1e-4 ~ 1e-3
- 使用学习率调度器:--lradj=type1
常见问题解决
-
显存不足
- 减少batch_size(默认32)
- 使用梯度累积
- 降低d_model维度
-
训练不稳定
- 增加正则化(dropout)
- 使用学习率预热
- 检查数据标准化
-
预测效果不佳
- 尝试不同模型(查看Leaderboard)
- 调整序列长度
- 检查数据预处理
资源与社区
学习资源
- 官方教程:tutorial/TimesNet_tutorial.ipynb
- 论文参考:TimesNet论文
- API文档:README.md
贡献指南
欢迎通过PR贡献新模型或改进:
- Fork仓库
- 创建分支(feature/your-feature)
- 提交代码
- 创建PR
贡献指南详情:CONTRIBUTING.md
联系与支持
- 提交Issue:项目GitHub Issues页面
- 邮件列表:wuhx23@mails.tsinghua.edu.cn(维护团队)
总结与展望
Time-Series-Library为时间序列分析提供了一站式解决方案,无论是学术研究还是工业应用都能显著提高开发效率。通过本文介绍的方法,你已经掌握了TSLib的基本使用流程和高级技巧。
未来TSLib将持续更新,计划支持更多前沿模型和任务类型,包括时空预测、因果推断等。建议定期关注项目更新,以获取最新功能和性能改进。
如果你觉得本项目有帮助,请点赞、收藏并关注作者,以便获取更多时间序列分析相关教程和工具推荐。下一期我们将深入探讨如何基于TSLib进行自定义模型开发,敬请期待!
注:本文基于Time-Series-Library最新版本编写,所有代码示例均经过测试验证。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0193- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00


