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

Keras LSTM多变量预测模型:预测时如何指定目标列索引?

核心逻辑说明

tf.keras.Model.predict() 本身不负责指定预测目标列,你得到什么预测结果,完全是模型训练前构造标签、定义输出层时就确定的,和predict方法的参数配置没有关系。
那个多变量LSTM教程默认输出pollution列预测值的原因非常直接:

  • 构造监督训练数据集的阶段,代码通过滑窗生成每个样本的输入X和标签y时,X取的是过去固定时间步的所有列特征,y仅保留了未来时间步的pollution列数值,其余列的未来值都被直接从标签集中丢弃了,模型训练时从来没有学习过拟合其他列的数值。
  • 定义模型结构的阶段,最后一层全连接层设置为Dense(1),输出维度为1,和单目标(pollution列)的标签维度完全对应,模型训练全程都是在优化权重,让这个单输出值尽可能贴近真实的pollution标签值,训练完成后predict自然只会返回pollution列的预测结果。
修改预测目标列的操作方法

不需要特意把待预测列调整到CSV固定位置,按下面两个场景改对应代码即可:

  • 场景1:仅需要预测单列(替换原pollution的预测目标)
    1. 修改监督数据集构造逻辑:滑窗生成标签y时,不再固定取pollution列的未来值,而是定位到你需要预测的目标列对应的列索引,仅保留该列的未来时间步数值作为标签,其余列的未来值全部从标签集中移除即可。输入X可以保留所有列的历史时间步值作为特征,不需要额外调整列顺序。
    2. 模型输出层不需要改动,保留Dense(1)的单输出设置即可,训练完成后predict返回的单个数组,就是你指定的目标列的预测结果。
  • 场景2:需要同时预测多列
    1. 修改监督数据集构造逻辑:滑窗生成标签y时,保留所有你需要预测的列的未来时间步数值,丢弃不需要预测的列的未来值。
    2. 修改模型最后一层全连接层的输出维度,输出神经元数量和你要预测的列数保持一致,比如要同时预测3列就设置为Dense(3)。训练完成后predict返回的数组,会按你在y中放置列的顺序,依次返回对应列的预测结果。

踩坑提示:不要混淆输入特征和预测目标的边界。输入X包含哪些列,是提供给模型做判断的参考信息;标签y包含哪些列,才是模型需要学习输出的内容,二者和列在原始CSV中的存储顺序没有强制绑定关系,教程里把pollution放在第二列只是作者写代码时取索引方便而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:39:20