user58519
user58519

Reputation: 629

Sklearn transform error: Expected 2D array, got 1D array instead

I use sklearn to transform data with this code.

sc = MinMaxScaler()

test= df['outcome']
y = sc.fit_transform(test) 

It show error like this.

ValueError: Expected 2D array, got 1D array instead:
array=[ 21000. 36000.  5000. ...  7000.  12000.  11000.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

How to fix it?

Upvotes: 20

Views: 21747

Answers (3)

lcoandrade
lcoandrade

Reputation: 181

Use the error message in your favor. Use this code:

y = sc.fit_transform(np.reshape(test, (-1,1)))

Upvotes: 0

Aryerez
Aryerez

Reputation: 3495

If I remember correctly, MinMaxScalar can accept a pandas dataframe but not a series, so just do test = df[['outcome']] (dataframe with one column) instead of test = df['outcome'] (a series).

Upvotes: 30

GIRISH kuniyal
GIRISH kuniyal

Reputation: 770

MinMaxScaler required numpy input shape as (num_sample,1) but you are giving input as shape (num_sample,) Try this code :

sc = MinMaxScaler()
test= df['outcome'].values #convert to numpy array
y = sc.fit_transform(test.reshape(-1,1)) 

Upvotes: 5

Related Questions