使用scikit-learn LinearRegression时reg.predict报错:输入非二维数组
问题原因与解决方案
核心问题
reg.predict(1740)报错的原因是:scikit-learn的predict方法要求输入必须是二维数组(或可转换为二维数组的结构),而你传入的1740是单个标量,维度不匹配。
你训练模型时用的x_matrix是二维数组(shape为(n_samples, 1)),模型已经适配了「每个样本对应一行特征」的输入格式,所以预测时哪怕只有一个样本,也需要保持相同的二维结构。
修复方法
把单个数值包装成二维数组即可,有两种常用方式:
方式1:直接用嵌套列表传入
修改预测代码为:
reg.predict([[1740]])
这里[[1740]]是一个1行1列的二维数组,完全符合模型的输入要求。
方式2:用numpy的reshape转换
如果习惯用numpy处理,也可以这样写:
reg.predict(np.array(1740).reshape(-1, 1))
reshape(-1,1)会把单个标量转换成形状为(1,1)的二维数组,和训练时的特征维度保持一致。
验证修改后的代码
把你的预测行替换成上面任意一种写法,就能正常输出预测结果了。
内容的提问来源于stack exchange,提问作者Hoot
相关产品推荐
相关产品推荐

