在练习简单线性回归模型时,我得到了这个错误,我认为我的数据集有问题。
Here is my data set:
Here is independent variable X:
Here is dependent variable Y:
Here is X_train
Here Is Y_train
这是错误正文:
ValueError: Expected 2D array, got 1D array instead:
array=[ 7. 8.4 10.1 6.5 6.9 7.9 5.8 7.4 9.3 10.3 7.3 8.1].
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.
这是我的代码:
import pandas as pd
import matplotlib as pt
#import data set
dataset = pd.read_csv('Sample-data-sets-for-linear-regression1.csv')
x = dataset.iloc[:, 1].values
y = dataset.iloc[:, 2].values
#Spliting the dataset into Training set and Test Set
from sklearn.cross_validation import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size= 0.2, random_state=0)
#linnear Regression
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(x_train,y_train)
y_pred = regressor.predict(x_test)
谢谢你
8条答案
按热度按时间v2g6jxz61#
你需要给予
fit
和predict
两个方法2D数组。您的x_train
和x_test
当前仅为一维。控制台建议的操作应该有效:这使用numpy的
reshape
来转换数组。例如,x = [1, 2, 3]
可以被转换为矩阵x' = [[1], [2], [3]]
(-1给出矩阵的x维,从数组的长度和剩余维度推断,1是y维-给出一个n x 1矩阵,其中n是输入长度)。关于
reshape
的问题已经在过去得到了回答,例如,这应该回答reshape(-1,1)
的全部含义:What does -1 mean in numpy reshape?(下面的一些答案也很好地解释了这一点)ryhaxcpt2#
很多时候在做线性回归问题的时候,人们喜欢想象这个图
在输入上,我们有一个X = [1,2,3,4,5]的X
然而,许多回归问题具有多维输入。以房价预测为例。这不是决定房价的一个属性。它具有多种功能(例如:房间数量、位置等。)
如果查看文档,您将看到以下
它告诉我们行由样本组成,而列由特征组成。
然而,考虑一下当我们有一个特征作为输入时会发生什么。然后我们需要一个n x 1维的输入,其中n是样本的数量,第1列表示我们唯一的特征。
为什么
array.reshape(-1, 1)
建议有效?-1表示根据所提供的列数选择有效的行数。请参见下图了解它在输入中的变化。eqoofvh93#
如果您查看
LinearRegression
of scikit-learn的文档。fit(X,y,sample_weight=None)
X:numpy数组或shape [n_samples,n_features]的稀疏矩阵
预测(X)
X:{类数组,稀疏矩阵},形状=(n_samples,n_features)
正如你所看到的,
X
有2个维度,而as,你的x_train
和x_test
显然只有一个维度。按照建议,增加:在拟合和预测模型之前。
nsc4cvqm4#
使用
vlurs2pr5#
我建议在开始时重塑X,然后再将其拆分为训练和测试数据集:
gajydyqb6#
这是我用的
62lalag47#
这就是解决办法
对于多项式回归:
vxqlmq5t8#
修改
到