如何修复ValueError:预期的2D数组,而不是1D数组?

时间:2019-08-22 20:39:31

标签: python machine-learning

from sklearn.linear_model import LinearRegression
X=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

2 个答案:

答案 0 :(得分:0)

将数组reshape二维化怎么样? (请注意,错误消息也很冗长,无法提出建议!)

from sklearn.linear_model import LinearRegression
X=data['reck'].reshape(-1, 1)
y=data['price']
X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=0)

linreg = LinearRegression().fit(X, y)

答案 1 :(得分:0)

问题是您声明X和Y的方式

如果打印X或Y形状

X.shape

它会变成这样

(49,) 

说49行,但列为空

为避免这种情况,您可以像这样编辑代码

X=data[['reck']]
y=data[['price']]

打印形状时

X.shape

值会变成这样

(49,1)

将这些值传递给模型时,模型不会引发任何错误。

PS:我也是新的贡献者,我尽力解释了一下,但是对此可能会有更合乎逻辑的解释