RNN模型测试集逆缩放触发ValueError形状不匹配问题求助
错误根因
你使用的MinMaxScaler在训练阶段拟合的是包含7个特征的数据集,因此scaler内部存储的min_、scale_属性都是长度为7的一维数组。但你传入inverse_transform的inv_yhat形状为(334,6),仅包含6个特征,特征维度和scaler拟合时的维度不匹配,执行广播运算时直接触发报错。
排查&解决步骤
- 第一步先验证维度是否匹配:执行以下代码确认两个关键维度:
# 查看scaler拟合时的特征数,输出一定为7 print(scaler.n_features_in_) # 查看待逆缩放矩阵的特征数,输出一定为6 print(inv_yhat.shape)
- 第二步修复维度问题,两种可选方案:
- 补全特征列:检查你测试集的预处理逻辑,确认是不是构造
X_test时少生成了1个特征、或者拼接时漏加了一列。你原本的逻辑是预测值(1列)+ X_test除目标列外的所有特征,如果原数据集是7个特征,拼接后应该得到7列矩阵,和scaler维度匹配后即可正常逆缩放。 - 单独对预测值做逆缩放:如果仅需要得到目标列的逆缩放结果,不需要拼接其他特征,直接用目标列对应的scaler参数计算即可,避免维度匹配问题:
- 补全特征列:检查你测试集的预处理逻辑,确认是不是构造
# 0是你目标列在scaler拟合时的列索引,根据实际情况调整即可 inv_yhat = yhat * scaler.scale_[0] + scaler.min_[0]
内容的提问来源于stack exchange,提问作者Selman Sapci
相关产品推荐
相关产品推荐

