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

如何用TimeseriesGenerator生成适配model.predict的预测数据?

时序预测中适配model.predict的输入数据生成方法

问题背景

你用TimeseriesGenerator生成训练数据没问题,但用全量数据预测时,因为该API强制要求传入y参数,且容易出现输入形状不匹配的问题,下面是几种直接有效的解决方法:


方法1:手动构造符合模型输入的数组(最直接)

TimeseriesGenerator本质就是帮你生成**[样本数, 时间步长(n_input), 特征数(n_features)]**形状的输入序列,完全可以手动构造,不用依赖它:

import numpy as np

# 提取输入特征,形状为(总样本数, 特征数)
x_raw = data[data_columns].to_numpy()
# 滑动窗口生成输入序列:每个样本是连续n_input个时间步的特征
x_predict = np.array([x_raw[i:i+n_input] for i in range(len(x_raw) - n_input + 1)])

# 直接喂给模型预测
p = model.predict(x_predict, batch_size=1)

这种方法完全避开了TimeseriesGenerator的y参数限制,而且能清晰控制输入形状,避免形状不匹配问题。

方法2:给TimeseriesGenerator传占位y(凑数即可)

如果非要用TimeseriesGenerator,只需要传一个和x长度匹配的占位y就行,预测时模型不会用到这个y:

x_raw = data[data_columns].to_numpy()
# 生成和x长度一致的占位y(全0、全1随便填)
y_dummy = np.zeros(len(x_raw))

# 生成器照常初始化,y用占位值
generator = TimeseriesGenerator(x_raw, y_dummy, length=n_input, batch_size=1)
# 直接调用predict,模型会自动取生成器输出的x作为输入
p = model.predict(generator)

方法3:用tf.data.Dataset构建输入管道(TensorFlow生态更灵活)

如果你的模型是基于TensorFlow的,用tf.data.Dataset构建滑动窗口输入会更灵活,也不需要处理y参数:

import tensorflow as tf

x_raw = data[data_columns].to_numpy()
# 转换为TensorFlow数据集
dataset = tf.data.Dataset.from_tensor_slices(x_raw)
# 滑动窗口:每个窗口包含n_input个时间步,步长为1,丢弃长度不足的窗口
dataset = dataset.window(n_input, shift=1, drop_remainder=True)
# 将窗口转换为连续张量
dataset = dataset.flat_map(lambda window: window.batch(n_input))
# 设置批量大小
dataset = dataset.batch(1)

# 预测
p = model.predict(dataset)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:20:30