神经网络预测值追加逆缩放测试数据触发IndexError问题求助
解决方法:给逆缩放后的测试数据添加预测值
你猜的完全没错!这个IndexError确实是因为执行scaler.inverse_transform()后,Xtest从Pandas DataFrame变成了NumPy数组——而NumPy数组不支持用字符串列名(比如"prediction")来赋值,它只认整数索引、切片这类合法的索引方式。
下面给你两种实用的解决方案:
方案1:转回Pandas DataFrame后添加列
如果后续需要用DataFrame的便捷操作(比如查看、筛选、导出),推荐先把逆缩放后的数组转回DataFrame:
# 假设你之前保留了原始特征的列名(比如训练前的X列名) original_feature_names = ["特征1", "特征2", ...] # 替换成你实际的列名 # 将逆缩放后的NumPy数组转回DataFrame Xtest_df = pd.DataFrame(Xtest, columns=original_feature_names) # 现在就可以正常添加预测值列了 Xtest_df["prediction"] = pred
⚠️ 注意:如果没保留原始列名,转回的DataFrame会用0、1、2...作为列名,记得提前存好原数据的列名哦。
方案2:直接用NumPy拼接数组
如果后续不需要DataFrame,只想得到包含预测值的数值数组,可以用np.hstack()横向拼接:
# 先把一维的预测值转成二维数组(和Xtest的维度匹配) pred_2d = pred.reshape(-1, 1) # 横向拼接原Xtest数组和预测值数组 Xtest_with_pred = np.hstack((Xtest, pred_2d))
这样得到的Xtest_with_pred是一个新的NumPy数组,最后一列就是你的预测值。
内容的提问来源于stack exchange,提问作者michael0196
相关产品推荐
相关产品推荐

