from sklearn.linear_model import LinearRegressionX=data['reck']y=data['price']X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=0)linreg = LinearRegression().fit(X, y)
我在处理线性回归问题时编写了代码,但在查看结果时出现了以下错误:
ValueError: Expected 2D array, got 1D array instead: array=[122360. 122365. 49800. ... 2696. 2357. nan].Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
我的模型是一维的。它试图找出汽车接收公里数与它们所接受服务的价格之间的关系。
chasis number reck price 0 999.JACJ5AT.SPC00 122360.0 330000 1 999.JACJ5AT.SPC00 122365.0 385000 2 999.JACS5AT.SPC00 49800.0 753500 3 999.JACS5AT.SPC00 49805.0 1732500 4 999.JACS5AT.SPC00 49908.0 1375000
回答:
问题出在你声明 X 和 Y 的方式上。
如果你打印 X 或 Y 的形状
X.shape
会得到类似这样的结果
(49,)
这表示有49行,但没有列。
为了避免这个问题,你可以像这样修改你的代码
X=data[['reck']]y=data[['price']]
当你打印形状时
X.shape
得到的值会是这样的
(49,1)
当你将这些值传递给你的模型时,模型将不会抛出任何错误。
附注:我也是新贡献者,我尽我所能地解释了这个问题,但可能还有更合理的解释。