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最新版本编写,所有代码示例均经过测试验证。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00


