ValueError: Expected 2D array, got 1D array instead:
A lot of times when doing linear regression problems, people like to envision this graph
On the input, we have an X of X = [1,2,3,4,5]
However, many regression problems have multidimensional inputs. Consider the prediction of housing prices. It's not one attribute that determines housing prices. It's multiple features (ex: number of rooms, location, etc. )
If you look at the documentation you will see this
It tells us that rows consist of the samples while the columns consist of the features.
However, consider what happens when he have one feature as our input. Then we need an n x 1 dimensional input where n is the number of samples and the 1 column represents our only feature.
Why does the array.reshape(-1, 1)
suggestion work? -1 means choose a number of rows that works based on the number of columns provided. See the image for how it changes in the input.
You need to give both the fit
and predict
methods 2D arrays. Your x_train
and x_test
are currently only 1 dimensional. What is suggested by the console should work:
x_train= x_train.reshape(-1, 1)
x_test = x_test.reshape(-1, 1)
This uses numpy's reshape
to transform your array. For example, x = [1, 2, 3]
wopuld be transformed to a matrix x' = [[1], [2], [3]]
(-1 gives the x dimension of the matrix, inferred from the length of the array and remaining dimensions, 1 is the y dimension - giving us a n x 1 matrix where n is the input length).
Questions about reshape
have been answered in the past, this for example should answer what reshape(-1,1)
fully means: What does -1 mean in numpy reshape? (also some of the other below answers explain this very well too)