如何修复ValueError:应为2D数组,改为1D数组?

2024-04-25 13:30:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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. 

我的模型只是1D,它试图找出汽车的接待公里数和他们接受的服务价格之间的关系。你知道吗

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

Tags: testyourdataif错误trainarrayprice
2条回答

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

如果打印X或Y的形状

X.shape

会是这样的

(49,) 

显示49行,但列为空

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

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

打印形状时

X.shape

价值是这样的

(49,1)

当您将这些值传递给模型时,模型不会抛出任何错误。你知道吗

PS:我也是一个新的投稿人,我尽我所能地解释它,但是可以有更合乎逻辑的解释

如何reshape将数组转换为2D?(请注意,错误消息足够详细,可以提出它!)你知道吗

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)

相关问题 更多 >