Sklearn中出现ValueError:期望二维数组却得到标量数组的问题排查
问题原因与解决方法
错误原因
你调用reg.predict(750)时传入的是标量值750,但sklearn的LinearRegression.predict()方法要求输入必须是二维数组——这和你训练模型时传入的x_matrix(形状为(n_samples, 1)的2D数组)维度必须保持一致。哪怕只预测单个样本,也需要把输入包装成符合要求的二维结构。
修复方法
有两种简单的修改方式:
- 把标量转成二维数组(和训练时的处理逻辑一致):
reg.predict(np.array(750).reshape(-1, 1))
- 直接传入嵌套列表的二维结构:
reg.predict([[750]])
补充说明
训练时你把x转成x_matrix是因为LinearRegression.fit()同样要求特征输入为二维数组,但预测阶段容易忽略这个要求——记住:sklearn所有监督学习模型的predict()方法,输入的特征维度必须和训练时的特征维度完全匹配。
内容的提问来源于stack exchange,提问作者pomens
相关产品推荐
相关产品推荐

