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

时间序列预测:如何使用已训练保存模型预测未来24小时数据?

问题说明

参考Hvass-Labs TensorFlow时间序列预测教程完成自有数据的模型训练后,直接执行y_pred = model.predict(past_dataset)得到的结果是模型对历史输入段的拟合值(即示意图中与历史灰线走势贴合的红线),无法直接输出2022-06-06全天的未来24小时预测结果,按以下步骤操作即可得到目标预测值。

具体实现步骤
  • 先确认模型的两个基础参数
    先对齐训练阶段的配置:一是模型要求的输入序列长度(即单次预测需要喂给模型多少个连续历史时间步的数据),二是模型单次输出的预测步长(如果是直接预测24小时则步长为24,对应1小时粒度的全天数据;如果是单步预测则每次仅输出1个时间步的结果)。
  • 构造预测用的输入序列
    取距离预测起点最近、长度等于模型输入要求的连续历史数据,做和训练阶段完全一致的预处理:包括缺失值填充、归一化/标准化、特征工程,最后reshape成模型要求的输入张量形状(单样本预测的格式一般为[1, 输入序列长度, 特征数量])。
    举个例子:如果模型要求输入过去168小时(7天)的数据预测未来24小时,你就取2022-05-30 00:00至2022-06-05 24:00的处理后数据作为输入即可,不需要把5月21日开始的全量历史数据都喂进去。
  • 执行预测并还原结果
    多步预测模型(单次输出24步)直接调用预测接口即可:
    # last_processed_seq为预处理完成、形状符合要求的输入序列
    y_future = model.predict(last_processed_seq, verbose=0)
    # 对预测结果做反归一化,还原为原始数据的量纲
    y_future_origin_scale = scaler.inverse_transform(y_future.reshape(-1, 1)).flatten()
    
    最终得到的y_future_origin_scale就是2022-06-06 00:00至24:00的全天预测值,按时间顺序对齐即可。
    如果是单步预测模型,需要做滚动迭代预测:每预测1个时间步的结果,就把该结果追加到输入序列末尾、删掉输入序列最头部的1个旧时间步,保持输入序列长度不变,再预测下一个时间步,循环24次即可得到全天结果。注意滚动预测的误差会随步长增加逐步累积。
之前预测结果不符合预期的原因

你之前传入的past_dataset是把整段2022-05-21至2022-06-05的历史数据按滑动窗口规则切分后的数据集,模型对每个滑动窗口输出的是该窗口后紧邻的一段预测值,把所有窗口的预测结果按时间拼接后,就得到了和历史灰线走势贴合的红线,本质是模型在历史数据上的回测拟合效果,不是向外推演的未来预测值。

注意事项
  • 所有预处理、反归一化的逻辑必须和训练阶段完全一致,不能随意更改参数,否则预测结果会完全失真
  • 对齐时间轴时注意确认训练时的偏移逻辑:如果输入序列最后一个时间点是t,要确认模型输出的第一个预测点对应t+1还是t,避免时间错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:02:00