Se pasó un vector de columna y cuando se esperaba una matriz 1d
⏰ 4 minutos de lectura
Klausos Klausos
necesito encajar RandomForestRegressor de 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:
Advertencia de conversión de datos: se pasó un vector de columna y cuando se esperaba una matriz 1d. Cambie la forma de y a (n_samples,), por ejemplo, usando ravel().
modelo = forest.fit(train_fold, train_y)
Previamente train_y era una serie, ahora es una matriz numpy (es un vector de columna). si aplico train_y.ravel()luego se convierte en un vector de fila y no aparece ningún mensaje de error, a través del paso de predicción lleva mucho tiempo (en realidad, nunca termina…).
en los documentos de RandomForestRegressor encontre eso train_y debe definirse como y : array-like, shape = [n_samples] or [n_samples, n_outputs]
¿Alguna idea de cómo resolver este problema?
Se ve bien. ¿Ha intentado entrenar 100 filas de datos para asegurarse de que funcione correctamente (ya que dijo que nunca terminó)? Además, ¿ha examinado el contenido de su train_y datos para asegurarse de que el preprocesamiento no los haya corrompido?
– Alejandro
8 dic 2015 a las 21:22
Impresión RF_tuned_parameters para nosotros por favor.
model = forest.fit(train_fold, train_y.values.ravel())
Explicación:
.values dará los valores en un numpy matriz (forma: (n,1))
.ravel convertirá esa forma de matriz en (n, ) (es decir, la aplanará)
Alguien podría explicar lo que realmente cambia.
– Raúl Bali
3 de junio de 2017 a las 23:34
AttributeError: el objeto ‘numpy.ndarray’ no tiene atributos ‘valores’
– John Ktejik
23 de noviembre de 2017 a las 20:05
Si tiene un numpy.ndarray, use train_y.ravel() en su lugar.
– Caridad Leschinski
3 de diciembre de 2017 a las 19:33
@RahulParashar qué ravel() hace es: cuando tienes y.shape == (10, 1)usando y.ravel().shape == (10, ). En palabras… aplana una matriz.
– Pascal VKooten
11 de agosto de 2018 a las 14:42
¿Es esto siquiera una advertencia útil?
– Alex
8 de febrero de 2020 a las 19:17
Simón Leung
También me encontré con esta situación cuando estaba tratando de entrenar a un KNN clasificador 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"))
Delante de esta línea usé import numpy as np.
Al usar el .ravel() El enfoque de mi vector de columna era un convertidor a un vector de fila en lugar de una matriz, pero esta solución funcionó para mí.
– kabdulla
30 oct 2018 a las 10:45
mohammad hassan bigdeli shamlo
Yo tuve el mismo problema. El problema era que las etiquetas estaban en formato de columna mientras que lo esperaba en una fila. usar np.ravel()
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
que es
train_fold.shape
ytrain_y.shape
?– Alejandro
08/12/2015 a las 21:05
@Alexander: tren_pliegue: tupla (749904,24)… tren:y.ravel(): tupla (749904,)
– Klausos Klausos
8 dic 2015 a las 21:16
Se ve bien. ¿Ha intentado entrenar 100 filas de datos para asegurarse de que funcione correctamente (ya que dijo que nunca terminó)? Además, ¿ha examinado el contenido de su
train_y
datos para asegurarse de que el preprocesamiento no los haya corrompido?– Alejandro
8 dic 2015 a las 21:22
Impresión
RF_tuned_parameters
para nosotros por favor.–Imanol Luengo
8 dic 2015 a las 21:25
@imaluengo: {‘n_estimators’: 40, ‘max_features’: 0.8, ‘n_jobs’: 2, ‘verbose’: True, ‘min_samples_split’: 6, ‘random_state’: 123}
– Klausos Klausos
8 dic 2015 a las 21:29