Keras Sequential模型训练正常测试时维度不匹配报错如何解决?
特征维度不匹配报错解决方法
报错核心原因是模型训练时接收的输入特征维度为45,而测试阶段传入的X_test特征维度为46,二者不匹配触发输入校验报错。
排查步骤
- 先运行代码确认数据集实际维度:
print("训练集特征数:", X_train.shape[1]) print("测试集特征数:", X_test.shape[1])
打印后可确认X_test确实比X_train多1列特征,和你预期的总45个特征不符。
- 排查特征处理流程的常见错误点:
- 拆分数据集时训练集正确剔除了标签列,但测试集处理时遗漏,把标签列也算进了测试特征中
- 做独热编码、特征缩放等预处理操作时,训练集和测试集没有用统一的处理规则,导致测试集多生成了1个特征维度
- 读取测试集csv等文件时没有设置索引列参数,把文件自带的行序号当成了特征列读入
修复方案
确认X_test多余的列后,直接裁剪为和X_train一致的45个特征即可,示例代码:
# 若多余列在末尾,直接取前45列 X_test = X_test.iloc[:, :45] # 若明确知道多余列的列名,直接删除对应列 # X_test = X_test.drop("多余列名", axis=1)
裁剪完成后重新运行NN_model.evaluate(X_test, y1_test)即可正常执行。
内容的提问来源于stack exchange,提问作者MinHaw
相关产品推荐
相关产品推荐

