如何在Spyder中使用简单线性回归时解决“值错误:期望二维数组但得到一维数组”的问题

我是机器学习的新手,第一次在我的电脑上尝试使用简单线性回归。我遇到了一个错误,提示值错误:期望二维数组但得到一维数组。

我不知道该怎么办。任何关于修复此代码的建议都会有所帮助。

import numpy as npimport matplotlib as pltimport pandas as pd#准备数据集dataset = pd.read_csv("Salary_Data.csv")X = dataset.iloc[:,0].valuesY = dataset.iloc[:,1].values#缺失值处理#编码#拆分数据集from sklearn.model_selection import train_test_splitX_train,X_test,Y_train,Y_test = train_test_split(X,Y, test_size = 1/3, random_state = 0)#格式缩放#简单线性回归from sklearn.linear_model import LinearRegressionregressor = LinearRegression()regressor.fit(X_train,Y_train)

我得到的错误是:

regressor.fit(X_train,Y_train)Traceback (most recent call last):  File "<ipython-input-10-4d17c24ccad2>", line 1, in <module>    regressor.fit(X_train,Y_train)  File "C:\Users\home\Anaconda\lib\site-packages\sklearn\linear_model\base.py", line 458, in fit    y_numeric=True, multi_output=True)  File "C:\Users\home\Anaconda\lib\site-packages\sklearn\utils\validation.py", line 756, in check_X_y    estimator=estimator)  File "C:\Users\home\Anaconda\lib\site-packages\sklearn\utils\validation.py", line 552, in check_array    "if it contains a single sample.".format(array))ValueError: Expected 2D array, got 1D array instead:array=[ 2.9  5.1  3.2  4.5  8.2  6.8  1.3 10.5  3.   2.2  5.9  6.   3.7  3.2  9.   2.   1.1  7.1  4.9  4. ].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.

回答:

根据sklearn文档LinearRegression::fit()期望X的形状为(n_samples, n_features)Y的形状为(n_samples, n_targets)。在讨论的案例中,我认为这应该对应于(20L, 1)(20L, )(即一个长度为20的“行向量”和一个长度为20的“列向量”)。调用

X = dataset.iloc[:,0].values

产生了一个形状为(20L, )的对象。因此,需要将其重塑为(20L, 1),这相当简单(实际上,这就是那个有点神秘的建议“使用array.reshape(-1, 1)”想要告诉你的),

X = dataset.iloc[:,0].values.reshape(-1, 1)

正如@Dan所指出的,另一个合适的替代方案是

X = dataset.iloc[:,[0]].values

这两个选项都会产生一个形状为(20L, 1)的对象,然后与形状为(20L, )Y对象兼容。请注意,X_trainY_train的形状分别反映了XY的形状。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注