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

DataFrame转Keras模型输入层遇形状不匹配,求正确转换方法

解决Keras输入不兼容及DataFrame转数组问题

问题根源

你犯了两个关键错误:

  • 转换DataFrame为数组时,用了X_test_soc.to_num而非正确的X_test_soc.to_numpy(),前者只是引用方法对象,没有实际执行数据转换,导致后续的"数组"无有效数据,重塑时触发size 0的错误。
  • 无效的转换结果被传入模型,自然会引发输入形状不匹配的报错。

正确解决步骤

  1. 正确转换DataFrame为numpy数组
    执行以下代码完成转换:

    X_test_soc_array = X_test_soc.to_numpy()
    

    转换后用以下命令验证数据有效性:

    print(X_test_soc_array.shape)  # 应输出 (2203, 16)
    print(X_test_soc_array.size)   # 应输出 2203*16=35248
    
  2. 检查DataFrame的合法性
    如果转换后仍有问题,先排查DataFrame本身:

    • 用X_test_soc.info()查看是否存在非数值类型列,Keras模型要求输入为数值型数据,若有字符串等非数值列,需先通过编码或删除处理。
    • 用X_test_soc.isnull().sum()检查空值情况,大量空值会导致转换后的数组异常,需填充或删除含空值的行。
  3. 传入模型预测
    确认数组形状正确后,直接传入模型即可:

    predictions = model.predict(X_test_soc_array)
    

    Keras默认支持批量输入,(2203,16)的形状完全匹配模型要求的(None,16)(None代表自动适配批量大小)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:07:36