Valueerror: X and Y Must Be the Same Size
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...
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()
I need a help understanding the error in while executing the above code. Below is the error:
"raise ValueError("x and y must be the same size")"
I have .csv file with 1398 rows and 2 column. I have taken 40% as y_test set, as it is visible in the above code.
3 Answers
Print X_train shape. What do you see? I'd bet X_train is 2d (matrix with a single column), while y_train 1d (vector). In turn you get different sizes.
I think using X_train[:,0] for plotting (which is from where the error originates) should solve the problem
Slicing with [:, :-1] will give you a 2-dimensional array (including all rows and all columns excluding the last column).
Slicing with [:, 1] will give you a 1-dimensional array (including all rows from the second column). To make this array also 2-dimensional use [:, 1:2] or [:, 1].reshape(-1, 1) or [:, 1][:, None] instead of [:, 1]. This will make x and y comparable.
An alternative to making both arrays 2-dimensional is making them both one dimensional. For this one would do [:, 0] (instead of [:, :1]) for selecting the first column and [:, 1] for selecting the second column.
Try this:
x_train=np.arange(0,len(x_train),1)
It will make an evenly spaced array and your error will be gone permanently.