Python SKLearn Fit数组E

2024-04-27 00:24:58 发布

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

我对使用sklearn和python进行数据分析比较陌生,并尝试对从.csv文件加载的数据集运行一些线性回归。在

我已经将我的数据加载到train_test_split中,但是当我试图调整我的训练数据时,我收到了一个错误ValueError: Expected 2D array, got 1D array instead: ... 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.。在

model = lm.fit(X_train, y_train)处出错

由于我对这些软件包的使用很新鲜,所以我试图确定这是因为在运行回归之前没有将导入的csv设置为pandas数据框,还是与其他因素有关。在

我的CSV格式为:

Month,Date,Day of Week,Growth,Sunlight,Plants
7,7/1/17,Saturday,44,611,26
7,7/2/17,Sunday,30,507,14
7,7/5/17,Wednesday,55,994,25
7,7/6/17,Thursday,50,1014,23
7,7/7/17,Friday,78,850,49
7,7/8/17,Saturday,81,551,50
7,7/9/17,Sunday,59,506,29

下面是我如何设置回归:

^{pr2}$

Tags: 文件csv数据yourdataiftrain线性
3条回答

一旦将数据加载到train_test_split(X, y, test_size=0.2)中,它将返回Pandas系列X_train和{},并带有{}和{}维。如前面的答案所述,sklearn期望形状为[n_samples,n_features]的矩阵作为X_trainX_test数据。您只需将Pandas系列X_train和{}转换为Pandas数据帧,将它们的维度更改为(192, 1)和{}。在

lm = linear_model.LinearRegression()
model = lm.fit(X_train.to_frame(), y_train)

您只使用一个功能,因此它会告诉您如何在错误范围内执行以下操作:

Reshape your data either using array.reshape(-1, 1) if your data has a single feature.

在scikit learn中,数据必须是二维的。在

(别忘了X = organic['Sunglight']中的打字错误)

您只需将最后一列调整为

lm = linear_model.LinearRegression()
model = lm.fit(X_train.values.reshape(-1,1), y_train)

模型会很适合的。原因是sklearn的线性模型期望

X : numpy array or sparse matrix of shape [n_samples,n_features]

所以我们的训练数据必须是[7,1]的形式

相关问题 更多 >