You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GluonTS DeepAR建模遇KeyError:目标列'USGG10YR Index'未被识别

解决GluonTS DeepAR模型KeyError目标列问题

1. 严格匹配目标列参数与DataFrame列名

确认创建PandasDataset时,target参数的列名和DataFrame中的列名完全一致,包括大小写、空格和特殊字符。比如:

# 错误示例:列名少了空格或大小写错误
train_dataset = pd_dataset.PandasDataset(train_df, target="USGG10YRIndex")
# 正确示例:严格匹配原列名
train_dataset = pd_dataset.PandasDataset(train_df, target="USGG10YR Index")

先打印列名列表确认一致性:

print(train_df.columns.tolist())

2. 检查训练/验证集的列完整性

分割数据集后,确认两集合都包含目标列:

assert "USGG10YR Index" in train_df.columns, "训练集缺失目标列"
assert "USGG10YR Index" in val_df.columns, "验证集缺失目标列"

分割时如果误过滤了目标列,就会触发KeyError。

3. 验证日期索引的有效性

补全日期后,确保索引是DatetimeIndex类型且无重复值:

# 转换为DatetimeIndex(若当前不是)
train_df.index = pd.to_datetime(train_df.index)
val_df.index = pd.to_datetime(val_df.index)

# 检查重复索引
assert not train_df.index.duplicated().any(), "训练集存在重复日期索引"
assert not val_df.index.duplicated().any(), "验证集存在重复日期索引"

# 确认索引连续(DeepAR支持不规则索引,但连续索引可避免潜在问题)
idx = pd.date_range(start=train_df.index.min(), end=train_df.index.max(), freq='D') # 根据你的数据频率调整freq
assert train_df.index.equals(idx), "训练集索引不连续"

4. 单序列场景避免多余参数干扰

如果是单时间序列,不要设置item_id参数,避免模型把其他列当成序列标识符:

# 单序列正确初始化方式
train_dataset = pd_dataset.PandasDataset(train_df, target="USGG10YR Index")

5. 用简化测试用例定位问题

用一小段测试数据验证,排除复杂数据集的干扰:

test_data = pd.DataFrame(
    {"USGG10YR Index": [1.2, 1.3, 1.4, 1.5]},
    index=pd.date_range(start="2023-01-01", periods=4, freq='D')
)
test_dataset = pd_dataset.PandasDataset(test_data, target="USGG10YR Index")
# 遍历数据集,检查是否触发KeyError
for entry in test_dataset:
    print(entry)

如果测试用例正常运行,说明问题出在原始数据集的处理环节,比如分割逻辑错误、索引转换不彻底等。


内容的提问来源于stack exchange,提问作者Son

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:39:55