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

如何将时间序列DataFrame转为单变量LSTM分类器的合法输入?

报错原因

你搭建的LSTM模型要求输入为3维张量,维度规则为(样本数量, 时间步长, 特征数量),对应你代码里定义的input_shape=(n_timesteps,n_features)参数。
你当前转换后得到的输入是形状为(370*27, 25)的二维数组,缺少了最后一维的特征数量维度,因此触发维度不匹配的报错。

正确转换方法

根据你设定的时间步长25、单特征的参数,转换逻辑需要补充最后一维的特征维度,分两种场景处理:

  • 场景1:你需要将每条长度为675的原始时间序列,拆分为27条长度为25的子序列作为独立样本
    可以直接一步完成reshape操作:
    X = df.values.reshape((370 * 27, 25, 1))
    
    注意:这种情况下你的标签y也需要同步调整,总数量要和输入样本数370*27=9990对应,否则训练时还会出现标签和样本不匹配的错误。
  • 场景2:你不需要拆分原始序列,希望每条长度为675的原始样本对应一个分类结果
    首先需要将LSTM层的输入时间步长修改为675,再做维度转换:
    # 修改模型输入定义
    n_timesteps = 675
    model = Sequential() 
    model.add(LSTM(100,input_shape=(n_timesteps,n_features)))
    # 后续层代码保持不变
    
    # 数据转换
    X = df.values.reshape((370, 675, 1))
    

从你最初的参数设置来看,场景1更符合你的预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:05