我写了这段代码,但是小的改变会产生一些差异并产生错误

时间:2017-06-20 09:34:12

标签: python pandas linear-regression

我写了

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

dataset=pd.read_csv("Salary_Data.csv")
X=  dataset.iloc[:,:-1].values  
y= dataset.iloc[:,1].values     

from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test= train_test_split(X, y, test_size=1/3, 
random_state=0)

from sklearn.linear_model import LinearRegression
regressor=LinearRegression()
regressor.fit(X_train,y_train)

当我将第5行代码更改为 -

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

(因为我的数据集只有两列年龄和薪水) 它生成并出错

ValueError: Found input variables with inconsistent numbers of samples: [1, 20]

2 个答案:

答案 0 :(得分:3)

如果您将pandas索引运算符传递给列表,则输出仍为DataFrame。 DataFrames是二维的,它将给出(n,1)的数组维数,其中n是行数。 sklearn期待X阵列的二维数据。

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

答案 1 :(得分:1)

该函数需要数组为(nb_row, nb_cols)之类的形状。当您使用切片(即:)时,输出是一个DataFrame,因此在您的情况下生成一个形状(20,1)的数组,但如果您使用单个索引,它将返回一个形状为{的Series。 {1}}。使用reshape获取(20,)数组而不是(20,1)数组:

(20,)