0 votes
1 view
in Data Science by (17.6k points)

I need to fit RandomForestRegressor from sklearn.ensemble.

forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)

model = forest.fit(train_fold, train_y)

yhat = model.predict(test_fold)

This code always worked until I made some preprocessing of data (train_y). The error message says:

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().

model = forest.fit(train_fold, train_y)

Previously train_y was a Series, now it's numpy array (it is a column-vector). If I apply train_y.ravel(), then it becomes a row vector and no error message appears, through the prediction step takes very long time (actually it never finishes...).

In the docs of RandomForestRegressor I found that train_y should be defined as y : array-like, shape = [n_samples] or [n_samples, n_outputs] Any idea how to solve this issue?

1 Answer

0 votes
by (41.4k points)

Use this line:

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

instead of

model = forest.fit(train_fold, train_y)

If you want to learn more about Data Science, visit data science tutorial and data science certification by Intellipaat.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !