Necesito encajar 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 algún 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 ().
modelo = bosque.fit (tren_fold, tren_y)
Anteriormente train_y
era una serie, ahora es una matriz numpy (es un vector de columna). Si aplico train_y.ravel()
, 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?
fuente
train_fold.shape
ytrain_y.shape
?train_y
datos para asegurarse de que el preprocesamiento no los corrompió?RF_tuned_parameters
para nosotros por favor.Respuestas:
Cambie esta línea:
a:
Editar:
.values
dará los valores en una matriz. (forma: (n, 1).ravel
convertirá esa forma de matriz en (n,)fuente
ravel()
hace es: cuando tienesy.shape == (10, 1)
, usandoy.ravel().shape == (10, )
. En palabras ... aplana una matriz.También encontré esta situación cuando estaba tratando de entrenar a un clasificador KNN . pero parece que la advertencia desapareció después de que cambié:
knn.fit(X_train,y_train)
a
knn.fit(X_train, np.ravel(y_train,order='C'))
Adelante de esta línea utilicé
import numpy as np
.fuente
.ravel()
enfoque, mi vector de columna se convirtió en un vector de fila en lugar de una matriz, pero esta solución funcionó para mí.Yo tuve el mismo problema. El problema era que las etiquetas estaban en formato de columna mientras se esperaba en una fila. utilizar
np.ravel()
Espero que esto lo resuelva.
fuente
np.ravel()
?use el siguiente código:
si todavía recibe una palmada por error tan idéntica a la siguiente?
usa este código:
fuente
Otra forma de hacer esto es usar
ravel
fuente
Con neuraxle , puede resolver esto fácilmente:
Neuraxle es un marco similar a sklearn para el ajuste de hiperparámetros y AutoML en proyectos de aprendizaje profundo.
fuente
fuente
Y = y.values [:, 0]
Y - formated_train_y
y - train_y
fuente