benmaq
benmaq

Reputation: 148

DataConversionWarning: A column-vector y was passed when a 1d array was expected

I keep having an error running this part of my code:

scores = cross_val_score(XGB_Clf, X_resampled, y_resampled, cv=kf)

The error is :

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True)

I know there are lots of answers to this question, and that I need to use ravel(), but using it does not change anything!

Also, the array "y" I'm passing to the function is not a column-vector ...

See:

y_resampled
Out[82]: array([0, 0, 0, ..., 1, 1, 1], dtype=int64)

When I run

y_resampled.ravel()

I get

Out[81]: array([0, 0, 0, ..., 1, 1, 1], dtype=int64)

which is exactly the same as my initial variable...

Also, when I run y_resampled.values.ravel() I get an error telling me that this is well a numpy array...

Traceback (most recent call last): 
File "<ipython-input-80-9d28d21eeab5>", line 1, in <module>
y_resampled.values.ravel() 

AttributeError: 'numpy.ndarray' object has no attribute 'values'

Does any one of you have a solution to this?

Thanks a lot!

Upvotes: 8

Views: 12738

Answers (2)

Sevki Baba
Sevki Baba

Reputation: 366

Check out this answer man!

Simply:

model = forest.fit(train_fold, train_y.values.ravel())

Upvotes: 1

ABC
ABC

Reputation: 1

in you write y_resampled as dataframe, you can use values function.

import pandas as pd
y_resampled = pd.DataFrame(y_resampled)

Upvotes: 0

Related Questions