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

如何在GluonTS中使用滑动窗口生成的test_pairs进行预测评估?

解决GluonTS中test_pairs预测时ts_it为空的问题

问题出在test_pairs是TestData类型,它包含两个核心部分:用于模型预测输入的测试数据集,以及对应的真实标签序列。直接把test_pairs传给make_evaluation_predictions会导致函数无法正确解析数据,所以ts_it返回空值。

正确的使用方式如下:

1. 正确传入测试数据进行预测

将test_pairs.test_data作为dataset参数传入make_evaluation_predictions,这才是模型需要的输入数据集:

forecast_it, ts_it = make_evaluation_predictions(
    dataset=test_pairs.test_data, 
    predictor=predictor,
    num_samples=100,
)

2. 获取真实标签序列

真实的目标序列需要从test_pairs.label中提取,它和forecast_it的结果是一一对应的:

# 转换预测结果和真实序列为列表
forecasts = list(forecast_it)
actuals = list(test_pairs.label)

3. 评估预测结果

可以用GluonTS的内置评估指标对比forecasts和actuals:

from gluonts.evaluation import Evaluator

evaluator = Evaluator()
agg_metrics, item_metrics = evaluator(actuals, forecasts)

# 打印整体评估指标
print("整体评估指标:")
for metric, value in agg_metrics.items():
    print(f"{metric}: {value:.4f}")

完整示例代码

# 分割数据集
training_dataset, test_template = split(
    dataset, date=pd.Period("2015-04-07 00:00:00", freq="1H")
)
test_pairs = test_template.generate_instances(
    prediction_length=prediction_length,
    windows=3,
    distance=24,
)

# 训练模型
predictor = estimator.train(training_dataset)

# 生成预测
forecast_it, ts_it = make_evaluation_predictions(
    dataset=test_pairs.test_data, 
    predictor=predictor,
    num_samples=100,
)

# 转换为列表
forecasts = list(forecast_it)
actuals = list(test_pairs.label)

# 评估结果
evaluator = Evaluator()
agg_metrics, item_metrics = evaluator(actuals, forecasts)

print("整体评估指标:")
for metric, value in agg_metrics.items():
    print(f"{metric}: {value:.4f}")

内容的提问来源于stack exchange,提问作者Lord-Goku

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:43:14