ValueError:x和y的大小必须相同
machine-learning
numpy
python
5
0
import numpy as np
import pandas as pd
import matplotlib.pyplot as pt

data1 = pd.read_csv('stage1_labels.csv')

X = data1.iloc[:, :-1].values
y = data1.iloc[:, 1].values

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
label_X = LabelEncoder()
X[:,0] = label_X.fit_transform(X[:,0])
encoder = OneHotEncoder(categorical_features = [0])
X = encoder.fit_transform(X).toarray()

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

#fitting Simple Regression to training set

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

#predecting the test set results
y_pred = regressor.predict(X_test)

#Visualization of the training set results
pt.scatter(X_train, y_train, color = 'red')
pt.plot(X_train, regressor.predict(X_train), color = 'green')
pt.title('salary vs yearExp (Training set)')
pt.xlabel('years of experience')
pt.ylabel('salary')
pt.show()

在执行上述代码时,我需要帮助来了解错误。下面是错误:

“提高ValueError(” x和y必须具有相同的大小“)”

我有1398行2列的.csv文件。我已将40%作为y_test设置,因为在上面的代码中可见。

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

打印X_train形状。你看到了什么?我敢打赌X_train是2d(矩阵与一列),而y_train 1d(向量)。反过来,您得到不同的大小。

我认为使用X_train[:,0]进行绘图(这是错误的来源)应该可以解决问题

收藏
评论

[:, :-1]切片将得到一个二维数组(包括除最后一列以外的所有行和所有列)。

[:, 1]切片将为您提供一维数组(包括第二列中的所有行)。要使该数组也为二维,请使用[:, 1:2][:, 1].reshape(-1, 1)[:, 1][:, None]代替[:, 1] 。这将使xy具有可比性。


使两个阵列均为二维的另一种方法是使它们均为一维。为此,可以选择[:, 0] (而不是[:, :1] )来选择第一列,并使用[:, 1]来选择第二列。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号