Se pasó un vector de columna y cuando se esperaba una matriz 1d

Necesito ajustar RandomForestRegressor desde sklearn.ensemble .

 forest = ensemble.RandomForestRegressor(**RF_tuned_parameters) model = forest.fit(train_fold, train_y) yhat = model.predict(test_fold) 

Este código siempre funcionó hasta que hice un preprocesamiento de datos ( train_y ). El mensaje de error dice:

DataConversionWarning: se pasó una columna-vector y cuando se esperaba una matriz 1d. Cambie la forma de y a (n_samples,), por ejemplo, usando ravel ().

model = forest.fit (train_fold, train_y)

Anteriormente train_y era una serie, ahora es una matriz numpy (es una columna-vector). Si aplico train_y.ravel() , entonces se convierte en un vector de fila y no aparece ningún mensaje de error, ya que el paso de predicción lleva mucho tiempo (en realidad nunca termina …).

En los documentos de RandomForestRegressor , encontré que train_y debería definirse como y : array-like, shape = [n_samples] or [n_samples, n_outputs] Alguna idea de cómo resolver este problema?

Cambia esta línea:

 model = forest.fit(train_fold, train_y) 

a:

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

También me encontré con esta situación cuando intentaba entrenar a un clasificador de KNN . pero parece que la advertencia se fue después de que cambié:
knn.fit(X_train,y_train)
a
knn.fit(X_train, np.ravel(y_train,order='C'))

Antes de esta línea, utilicé import numpy as np .

use el siguiente código:

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

¿Si todavía está recibiendo una bofetada por error tan idéntico a la siguiente?

 Unknown label type: %r" % y 

usa este código

 y = train_y.ravel() train_y = np.array(y).astype(int) model = forest.fit(train_fold, train_y) 

Yo tuve el mismo problema. El problema era que las tags estaban en un formato de columna mientras se esperaba en una fila. utilizar np.ravel()

 knn.score(training_set, np.ravel(training_labels)) 

Espero que esto lo resuelva.

Otra forma de hacer esto es usar ravel

 model = forest.fit(train_fold, train_y.values.reshape(-1,))