3分钟上手Time-Series-Library:深度学习时间序列分析的终极指南
【免费下载链接】Time-Series-LibraryA Library for Advanced Deep Time Series Models for General Time Series Analysis.项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library
你是否正在寻找一个功能全面、易于使用的时间序列分析库?Time-Series-Library(TSLib)正是你需要的解决方案!这个开源深度学习库集成了超过40种先进的时间序列模型,覆盖预测、异常检测、分类和数据填补五大核心任务。无论你是时间序列分析的新手还是经验丰富的研究者,TSLib都能为你提供一站式的深度学习工具包。
项目概览与价值主张
Time-Series-Library是一个专为深度学习研究者设计的时间序列分析库,它提供了一个整洁、统一的代码库,让你能够轻松评估先进的深度学习时间序列模型或开发自己的模型。这个库的独特之处在于它将五个主流时间序列任务集成在一个框架中:长期预测、短期预测、数据填补、异常检测和分类。
图1:Time-Series-Library支持的五大时间序列分析任务及对应的基准数据集
TSLib不仅包含了传统的Transformer架构模型,还集成了最新的Mamba、TimesNet、TimeMixer等前沿模型。更重要的是,它支持大型时间序列模型(LTSMs)的零样本预测功能,让你能够直接使用预训练模型进行预测,无需从头训练。
快速开始指南
环境配置与安装
开始使用TSLib非常简单,只需几个步骤就能搭建完整的环境:
# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/ti/Time-Series-Library cd Time-Series-Library # 创建虚拟环境(推荐使用Python 3.11) conda create -n tslib python=3.11 conda activate tslib # 安装核心依赖 pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu121 pip install -r requirements.txt数据集准备
TSLib支持多种标准数据集,你可以从Google Drive、Baidu Drive或Hugging Face下载预处理好的数据,然后放置在./dataset目录下。项目支持的数据集包括ETT(电力变压器温度)、Traffic(交通流量)、Weather(气象数据)和M4(时间序列预测竞赛数据集)等。
一键测试所有任务
TSLib提供了快速测试脚本,让你在几分钟内验证所有五个任务的运行情况:
# 长期预测测试 python -u run.py --task_name long_term_forecast --is_training 1 --model DLinear --data ETTh1 --features M --seq_len 96 --pred_len 96 --train_epochs 1 # 短期预测测试 python -u run.py --task_name long_term_forecast --is_training 1 --model TimesNet --data ETTh1 --features M --seq_len 24 --pred_len 24 --train_epochs 1 # 数据填补测试 python -u run.py --task_name imputation --is_training 1 --model TimesNet --data ETTh1 --features M --seq_len 96 --train_epochs 1 # 异常检测测试 python -u run.py --task_name anomaly_detection --is_training 1 --model TimesNet --data PSM --features M --seq_len 100 --train_epochs 1 # 分类任务测试 python -u run.py --task_name classification --is_training 1 --model TimesNet --data UEA --train_epochs 1核心功能亮点
五大任务统一框架
TSLib的最大优势在于它将五个不同的时间序列任务集成在一个统一的框架中:
- 长期预测:支持最长720步的未来预测
- 短期预测:专注于M4竞赛数据集
- 数据填补:处理缺失值的时间序列
- 异常检测:识别时间序列中的异常点
- 分类任务:对时间序列进行分类
自动模型发现机制
TSLib采用智能的自动模型发现机制。你只需要将模型文件放置在models/目录下,系统就会自动检测并注册所有可用的模型。这意味着你可以轻松添加自己的模型,而无需修改核心代码。
模块化架构设计
项目的架构设计非常清晰,各个模块职责分明:
- 实验层(exp/):包含不同任务的实验实现,如exp_long_term_forecasting.py负责长期预测
- 模型层(models/):所有模型实现,目前包含40+种先进模型
- 数据层(data_provider/):数据处理和加载模块
- 工具层(utils/):评估指标、损失函数等工具
- 脚本层(scripts/):复现实验的脚本
模型选择与比较
主流模型排行榜
TSLib维护了一个实时的模型排行榜,帮助你快速选择最适合任务的模型:
| 任务类型 | 🥇 第一名 | 🥈 第二名 | 🥉 第三名 |
|---|---|---|---|
| 长期预测(Look-Back-96) | TimeXer | iTransformer | TimeMixer |
| 长期预测(Look-Back-Searching) | TimeMixer | PatchTST | DLinear |
| 短期预测 | TimesNet | Non-stationary Transformer | FEDformer |
| 数据填补 | TimesNet | Non-stationary Transformer | Autoformer |
| 异常检测 | TimesNet | FEDformer | Autoformer |
| 分类任务 | TimesNet | Non-stationary Transformer | Informer |
模型选择建议
根据不同的应用场景,我们建议:
- 长序列预测:优先考虑TimeXer、TimeMixer或PatchTST
- 实时推理:选择Mamba或LightTS,推理速度快
- 多变量预测:TimesNet或Autoformer能更好捕捉变量间依赖
- 零样本预测:使用Chronos2、TiRex或Sundial等大型时间序列模型
图2:TSLib中卷积操作的时间序列处理流程,展示如何将1D序列转化为2D结构
进阶使用技巧
自定义模型开发
如果你想在TSLib中添加自己的模型,只需遵循简单的三步:
- 将模型文件添加到models/目录
- 参考现有模型(如models/Transformer.py)的实现
- 在scripts/目录下创建对应的运行脚本
模型会自动被系统发现并注册,无需修改任何配置代码。
批量实验运行
TSLib提供了丰富的脚本目录,让你能够轻松复现论文结果或进行批量实验:
# 运行ETTh1数据集的TimesNet模型 bash ./scripts/long_term_forecast/ETT_script/TimesNet_ETTh1.sh # 运行M4数据集的短期预测 bash ./scripts/short_term_forecast/TimesNet_M4.sh # 运行异常检测实验 bash ./scripts/anomaly_detection/PSM/TimesNet.sh大型时间序列模型使用
TSLib支持多种大型时间序列模型的零样本预测:
# 使用Moirai模型进行零样本预测 python -u run.py \ --task_name zero_shot_forecast \ --is_training 0 \ --model Moirai \ --data ETTh1 \ --features M \ --seq_len 512 \ --pred_len 96图3:TSLib中傅里叶变换在时间序列分析中的应用,展示周期分解技术
常见问题解答
Q: 安装时遇到CUDA版本不匹配怎么办?
A: TSLib要求PyTorch与本地CUDA版本匹配。你可以通过以下命令检查CUDA版本并安装对应的PyTorch:
# 检查CUDA版本 nvcc --version # 安装对应版本的PyTorch # CUDA 12.1 pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu121 # CUDA 11.8 pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu118Q: 内存不足导致训练失败怎么办?
A: 可以尝试以下优化策略:
- 减小批处理大小:
--batch_size 16 - 使用梯度累积:
--gradient_accumulation_steps 4 - 使用混合精度训练:
--use_amp
Q: 如何选择合适的时间序列长度?
A: TSLib支持灵活的序列长度配置:
- 长期预测:通常使用96-720的输入长度
- 短期预测:通常使用6-48的输入长度
- 数据填补:根据缺失模式调整序列长度
Q: 多变量预测和单变量预测有什么区别?
A: 通过--features参数控制:
M:多变量预测多变量S:单变量预测单变量MS:多变量预测单变量
学习资源与社区
官方教程与文档
TSLib提供了丰富的学习资源:
- 官方文档:README.md - 包含完整的安装和使用指南
- 教程文件:tutorial/TimesNet_tutorial.ipynb - TimesNet模型的详细教程
- 模型目录:models/ - 所有模型实现的源代码
- 实验脚本:scripts/ - 复现实验的脚本集合
项目结构快速了解
要快速理解TSLib的架构,建议按以下顺序阅读代码:
- 先看scripts/目录下的运行脚本
- 然后查看run.py入口文件
- 深入了解exp/exp_basic.py基础实验类
- 最后探索具体的模型实现
社区支持与贡献
TSLib拥有活跃的开源社区,如果你遇到问题或有改进建议:
- 查看项目Issues页面寻找解决方案
- 参考CONTRIBUTING.md贡献指南
- 通过邮件联系维护团队获取帮助
图4:TSLib模型预测结果与真实值的对比,展示预测准确性
持续学习建议
对于想要深入学习时间序列分析的用户,我们建议:
- 从TimesNet开始:TimesNet是TSLib中表现最均衡的模型,适合初学者
- 理解基础概念:掌握时间序列的季节性、趋势性和周期性
- 实践不同任务:尝试所有五个任务,理解它们的不同需求
- 阅读源代码:深入理解模型实现细节
Time-Series-Library不仅是一个工具库,更是一个完整的时间序列分析生态系统。无论你是学术研究者还是工业界从业者,TSLib都能为你的时间序列分析项目提供强大的支持。现在就开始你的时间序列分析之旅吧!
【免费下载链接】Time-Series-LibraryA Library for Advanced Deep Time Series Models for General Time Series Analysis.项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考