线性回归调用predict方法时出现matmul维度不匹配错误如何解决?
错误原因
- 你调用
lr.predict()时传入了错误的输入参数:scikit-learn中所有预测模型的predict()方法要求输入的是特征矩阵X,而非标签数组y,你误把测试集标签y_test作为输入传入,本身就不符合预测逻辑。 - 第一次提示1D数组错误,是因为
y_test本身是一维的标签数组,而predict()要求输入的特征矩阵必须是二维结构;你后续对y_test做reshape(-1,1)调整后,相当于传入了一个只有1个特征的二维数组,但你的模型是用329维的特征训练得到的,输入特征维度和模型要求的329维不匹配,矩阵乘法运算无法执行,就触发了第二个维度不匹配的报错。
解决方法
- 直接将测试集的特征矩阵
X_test作为predict()的输入即可,不需要对y_test做任何处理,正确调用方式为:
y_pred = lr.predict(X_test)
- 如果你遇到
X_test为一维的情况(比如仅做单样本预测),再根据场景做维度调整:单样本预测使用X_test.reshape(1, -1),单特征多样本预测使用X_test.reshape(-1, 1)
内容的提问来源于stack exchange,提问作者Randy Chng
相关产品推荐
相关产品推荐

