首页
/ 30分钟上手Time-Series-Library:从安装到预测全流程

30分钟上手Time-Series-Library:从安装到预测全流程

2026-02-04 04:27:14作者:董宙帆

你是否还在为时间序列预测模型的选择和实现而烦恼?面对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加速推荐)

快速安装

  1. 克隆仓库
git clone https://gitcode.com/GitHub_Trending/ti/Time-Series-Library.git
cd Time-Series-Library
  1. 安装依赖
pip install -r requirements.txt

依赖配置文件:requirements.txt

数据准备

TSLib支持多种时间序列数据集,包括ETT、ECL、Weather等经典数据集。数据准备分为以下两步:

  1. 下载数据集 可从Google Drive百度网盘获取预处理后的数据集

  2. 数据存放 将下载的数据集解压至./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卷积捕获周期内和周期间的依赖关系。

FFT周期提取

图2:FFT周期提取过程(tutorial/fft.png

2D卷积处理

图3:2D卷积捕获时间依赖关系(tutorial/conv.png

核心代码实现:models/TimesNet.py

模型训练与评估流程

  1. 初始化实验对象
from exp.exp_long_term_forecasting import Exp_Long_Term_Forecast
exp = Exp_Long_Term_Forecast(args)
  1. 模型训练
exp.train(setting)
  1. 模型评估
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部分

自定义模型开发

开发步骤

  1. 创建模型文件 在models/目录下创建自定义模型文件,如MyModel.py

  2. 实现模型类 继承基础模型类,实现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
  1. 注册模型 在exp/exp_basic.py的model_dict中添加模型:
self.model_dict = {
    # ...现有模型
    'MyModel': MyModel
}
  1. 创建实验脚本 在scripts/目录下创建对应的bash脚本

开发模板

可参考以下现有模型结构:

进阶技巧与最佳实践

参数调优建议

  1. 序列长度设置

    • 短期预测:seq_len=96, pred_len=96
    • 长期预测:seq_len=336, pred_len=720
  2. 模型选择

    • 计算资源有限:优先选择DLinear、LightTS
    • 追求高精度:选择TimesNet、iTransformer
    • 长序列预测:选择PatchTST、TimeMixer
  3. 学习率调整

    • 初始学习率:1e-4 ~ 1e-3
    • 使用学习率调度器:--lradj=type1

常见问题解决

  1. 显存不足

    • 减少batch_size(默认32)
    • 使用梯度累积
    • 降低d_model维度
  2. 训练不稳定

    • 增加正则化(dropout)
    • 使用学习率预热
    • 检查数据标准化
  3. 预测效果不佳

    • 尝试不同模型(查看Leaderboard)
    • 调整序列长度
    • 检查数据预处理

资源与社区

学习资源

贡献指南

欢迎通过PR贡献新模型或改进:

  1. Fork仓库
  2. 创建分支(feature/your-feature)
  3. 提交代码
  4. 创建PR

贡献指南详情:CONTRIBUTING.md

联系与支持

  • 提交Issue:项目GitHub Issues页面
  • 邮件列表:wuhx23@mails.tsinghua.edu.cn(维护团队)

总结与展望

Time-Series-Library为时间序列分析提供了一站式解决方案,无论是学术研究还是工业应用都能显著提高开发效率。通过本文介绍的方法,你已经掌握了TSLib的基本使用流程和高级技巧。

未来TSLib将持续更新,计划支持更多前沿模型和任务类型,包括时空预测、因果推断等。建议定期关注项目更新,以获取最新功能和性能改进。

如果你觉得本项目有帮助,请点赞、收藏并关注作者,以便获取更多时间序列分析相关教程和工具推荐。下一期我们将深入探讨如何基于TSLib进行自定义模型开发,敬请期待!

注:本文基于Time-Series-Library最新版本编写,所有代码示例均经过测试验证。

登录后查看全文
热门项目推荐
相关项目推荐