TS2Vec数据预处理完全指南:支持UCR、UEA等6大时间序列数据集
想要掌握TS2Vec时间序列表示学习框架?数据预处理是关键第一步!TS2Vec作为一个通用时间序列表示学习框架,支持6大主流时间序列数据集:UCR、UEA、ETT、Electricity、Yahoo和KPI。本文将为你提供完整的TS2Vec数据预处理指南,从数据集下载到预处理脚本使用,一步步教你如何准备数据,让TS2Vec发挥最大效能。🚀
📊 6大时间序列数据集概览
TS2Vec支持以下6种主流时间序列数据集,涵盖分类、预测和异常检测三大任务:
| 数据集类型 | 数据集名称 | 任务类型 | 数据格式 | 预处理脚本 |
|---|---|---|---|---|
| 分类数据集 | UCR (128个) | 时间序列分类 | .tsv格式 | 无需预处理 |
| 分类数据集 | UEA (30个) | 多元时间序列分类 | .arff格式 | 无需预处理 |
| 预测数据集 | ETT (3个) | 电力负荷预测 | .csv格式 | 无需预处理 |
| 预测数据集 | Electricity | 电力消耗预测 | .txt原始数据 | datasets/preprocess_electricity.py |
| 异常检测 | Yahoo | Web服务异常检测 | .csv格式 | datasets/preprocess_yahoo.py |
| 异常检测 | KPI | 系统监控异常检测 | .csv和.hdf格式 | datasets/preprocess_kpi.py |
📥 数据集下载与准备
1. UCR时间序列分类数据集
UCR数据集包含128个单变量时间序列分类数据集,是时间序列分析领域的基准数据集。
下载地址:UCR数据集官网
目录结构要求:
datasets/UCR/
├── ECG200/
│ ├── ECG200_TRAIN.tsv
│ └── ECG200_TEST.tsv
├── FordA/
│ ├── FordA_TRAIN.tsv
│ └── FordA_TEST.tsv
└── ... (其他126个数据集)
2. UEA多元时间序列数据集
UEA数据集包含30个多元时间序列分类数据集,支持更复杂的时间序列分析。
下载地址:UEA数据集官网
目录结构要求:
datasets/UEA/
├── ArticularyWordRecognition/
│ ├── ArticularyWordRecognition_TRAIN.arff
│ └── ArticularyWordRecognition_TEST.arff
├── BasicMotions/
│ ├── BasicMotions_TRAIN.arff
│ └── BasicMotions_TEST.arff
└── ... (其他28个数据集)
3. ETT电力负荷数据集
ETT数据集包含3个电力变压器温度数据集,用于时间序列预测任务。
下载地址:GitHub - ETDataset
文件放置位置:
datasets/ETTh1.csvdatasets/ETTh2.csvdatasets/ETTm1.csv
🔧 数据预处理脚本详解
Electricity数据集预处理
Electricity数据集需要从原始TXT格式转换为CSV格式:
python datasets/preprocess_electricity.py -i LD2011_2014.txt -o electricity.csv
预处理步骤:
- 读取原始数据(分号分隔,逗号作为小数点)
- 按1小时重采样
- 过滤掉缺失值的实例
- 保留2012年之后的数据
- 保存为CSV格式
Yahoo异常检测数据集预处理
Yahoo数据集包含A1-A4四个基准测试集:
python datasets/preprocess_yahoo.py --path ydata-labeled-time-series-anomalies-v1_0 -o yahoo.pkl
关键处理逻辑:
- 合并A1、A2、A3、A4四个子数据集
- 使用ADF检验确保时间序列平稳性
- 数据标准化处理
- 保存为Pickle格式便于快速加载
KPI异常检测数据集预处理
KPI数据集需要处理训练和测试两个文件:
python datasets/preprocess_kpi.py --train-file phase2_train.csv --test-file phase2_ground_truth.hdf -o kpi.pkl
处理流程:
- 分别加载训练集和测试集
- 按KPI ID分组处理
- 标准化每个KPI序列
- 确保时间序列平稳性
- 合并所有数据并保存
🚀 快速开始:数据加载示例
TS2Vec通过datautils.py模块提供了统一的数据加载接口:
分类数据集加载
from ts2vec import TS2Vec
import datautils
# 加载UCR数据集
train_data, train_labels, test_data, test_labels = datautils.load_UCR('ECG200')
# 加载UEA数据集
train_data, train_labels, test_data, test_labels = datautils.load_UEA('ArticularyWordRecognition')
预测数据集加载
# 加载ETT数据集进行预测
data, train_slice, valid_slice, test_slice, scaler, pred_lens, n_covariate_cols = datautils.load_forecast_csv('ETTh1')
异常检测数据集加载
# 加载Yahoo异常检测数据集
all_train_data, all_train_labels, all_train_timestamps, all_test_data, all_test_labels, all_test_timestamps, delay = datautils.load_anomaly('yahoo')
⚙️ 训练时的数据加载器配置
在训练TS2Vec模型时,需要根据数据集类型选择合适的加载器:
| 数据集类型 | 加载器参数 | 示例命令 |
|---|---|---|
| UCR分类数据集 | --loader UCR | python train.py ECG200 run1 --loader UCR --eval |
| UEA分类数据集 | --loader UEA | python train.py ArticularyWordRecognition run1 --loader UEA --eval |
| 预测数据集(多变量) | --loader forecast_csv | python train.py ETTh1 run1 --loader forecast_csv --eval |
| 预测数据集(单变量) | --loader forecast_csv_univar | python train.py ETTh1 run1 --loader forecast_csv_univar --eval |
| 异常检测数据集 | --loader anomaly | python train.py yahoo run1 --loader anomaly --eval |
| 冷启动异常检测 | --loader anomaly_coldstart | python train.py kpi run1 --loader anomaly_coldstart --eval |
💡 数据预处理最佳实践
1. 数据标准化策略
TS2Vec内置了多种标准化策略:
- UCR数据集:对非标准化数据集进行全局标准化
- UEA数据集:使用StandardScaler进行特征级标准化
- 预测数据集:基于训练集进行标准化,保持时间特征一致性
- 异常检测数据集:基于训练集进行标准化,确保异常检测准确性
2. 时间特征提取
对于预测任务,TS2Vec自动提取时间特征:
- 分钟、小时、星期几
- 日期、一年中的第几天
- 月份、一年中的第几周
3. 数据分割策略
- 分类任务:使用官方提供的训练/测试分割
- 预测任务:60%训练,20%验证,20%测试
- 异常检测:前50%作为训练,后50%作为测试
🛠️ 常见问题与解决方案
Q1: 数据集下载后无法加载?
检查点:
- 确认数据集路径正确:
datasets/UCR/<dataset_name>/<dataset_name>_*.tsv - 检查文件权限和格式
- 确认数据集名称与代码中的名称一致
Q2: 预处理脚本运行失败?
解决方法:
- 检查Python依赖:
pip install -r requirements.txt - 确认输入文件路径正确
- 检查文件格式是否符合要求
Q3: 内存不足如何处理?
优化建议:
- 减少
batch-size参数(默认8) - 使用
--max-train-length限制序列长度 - 分批处理大型数据集
📈 性能优化技巧
1. 批量大小调整
- 小数据集:使用默认batch-size=8
- 大数据集:适当增大batch-size(16-32)
- GPU内存不足:减小batch-size
2. 表示维度选择
- 默认
--repr-dims 320适用于大多数任务 - 简单任务:可减少到128或256
- 复杂任务:可增加到512或640
3. 训练长度限制
- 使用
--max-train-length处理长序列 - 默认3000,可根据实际情况调整
- 过长序列会自动裁剪为多个子序列
🎯 总结
TS2Vec的数据预处理流程设计得非常完善,支持6大主流时间序列数据集,覆盖分类、预测和异常检测三大任务。通过本文的指南,你可以:
- ✅ 正确下载和准备所有6种数据集
- ✅ 使用预处理脚本处理原始数据
- ✅ 选择合适的加载器进行模型训练
- ✅ 优化数据预处理参数提升模型性能
记住,良好的数据预处理是成功应用TS2Vec时间序列表示学习框架的第一步!现在就开始准备你的时间序列数据,体验TS2Vec的强大表示学习能力吧!✨
提示:更多技术细节请参考datautils.py和各个预处理脚本的源码实现。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



