close

[Solved] Error in Python script “Expected 2D array, got 1D array instead:”?

Hello Guys, How are you all? Hope You all Are Fine. Today I get the following error Error in Python script “Expected 2D array, got 1D array instead:”? in python. So Here I am Explain to you all the possible solutions here.

Without wasting your time, Let’s start This Article to Solve This Error.

How Error in Python script “Expected 2D array, got 1D array instead:” Error Occurs?

Today I get the following error Error in Python script “Expected 2D array, got 1D array instead:”? in python.

How To Solve Error in Python script “Expected 2D array, got 1D array instead:” Error ?

  1. How To Solve Error in Python script “Expected 2D array, got 1D array instead:” Error ?

    To Solve Error in Python script “Expected 2D array, got 1D array instead:” Error You are just supposed to provide the predict method with the same 2D array, but with one value that you want to process (or more). In short, you can just replace

  2. Error in Python script “Expected 2D array, got 1D array instead:”?

    To Solve Error in Python script “Expected 2D array, got 1D array instead:” Error You are just supposed to provide the predict method with the same 2D array, but with one value that you want to process (or more). In short, you can just replace

Solution 1

You are just supposed to provide the predict method with the same 2D array, but with one value that you want to process (or more). In short, you can just replace

[0.58,0.76]

With

[[0.58,0.76]]

And it should work.

EDIT: This answer became popular so I thought I’d add a little more explanation about ML. The short version: we can only use predict on data that is of the same dimensionality as the training data (X) was.

In the example in question, we give the computer a bunch of rows in X (with 2 values each) and we show it the correct responses in y. When we want to predict using new values, our program expects the same – a bunch of rows. Even if we want to do it to just one row (with two values), that row has to be part of another array.

Solution 2

The problem is occurring when you run prediction on the array [0.58,0.76]. Fix the problem by reshaping it before you call predict():

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style

style.use("ggplot")
from sklearn import svm

x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]

plt.scatter(x,y)
plt.show()

X = np.array([[1,2],
             [5,8],
             [1.5,1.8],
             [8,8],
             [1,0.6],
             [9,11]])

y = [0,1,0,1,0,1]

clf = svm.SVC(kernel='linear', C = 1.0)
clf.fit(X,y)

test = np.array([0.58, 0.76])
print test       # Produces: [ 0.58  0.76]
print test.shape # Produces: (2,) meaning 2 rows, 1 col

test = test.reshape(1, -1)
print test       # Produces: [[ 0.58  0.76]]
print test.shape # Produces (1, 2) meaning 1 row, 2 cols

print(clf.predict(test)) # Produces [0], as expected

Summery

It’s all About this issue. Hope all solution helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which solution worked for you? Thank You.

Also, Read