PyTorch-Forecasting中TimeSeriesDataSet分类变量顺序异常问题
PyTorch-Forecasting分类变量问题原因解析
1. categoricals乱序与目标变量不匹配
- TimeSeriesDataSet在构建阶段,会自动按照**时间索引(time_idx)**和分组变量(如果配置了)对数据重新排序,确保每个时间序列的样本是连续的时间顺序。如果你的原始数据集不是严格按照「分组+时间递增」的规则排列,处理后的categoricals张量顺序就会和原数据中目标变量的顺序不匹配。
- 同时,
training.data是PyTorch的张量格式,它的顺序是基于数据集内部的滑动窗口采样逻辑组织的,和原始DataFrame的行顺序没有直接对应关系,视觉上就会呈现“乱序”的状态。
2. 小时列值变为0、1、12、17
- 这是PyTorch-Forecasting对分类变量执行标签编码后的表现,但你看到的其实是数据中实际存在的小时唯一值,而非编码后的索引。如果你的数据集仅包含这几个小时的样本(比如只采集了这些时段的数据),处理后categoricals里就只会保留这些值。
- 若你原本的小时列是0-23的全量值,那大概率是创建TimeSeriesDataSet时设置的时间窗口参数(如
max_encoder_length、max_decoder_length)过滤掉了其他小时的样本,或是原始数据本身存在缺失,仅这几个小时有有效记录。 - 补充:如果小时作为连续数值更符合业务逻辑,你可以将其移到
time_varying_known_reals参数中,而非分类变量——但如果明确需要按分类处理,核心原因还是数据有效样本覆盖的小时仅为这几个。
内容的提问来源于stack exchange,提问作者Jose_Peeterson
相关产品推荐
相关产品推荐

