python - operaciones - Se pasó una columna-vector y cuando se esperaba una matriz 1d
operaciones con matrices en python (5)
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:
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 (pliegue_entre, 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, a través del paso de predicción lleva mucho tiempo (en realidad nunca termina ...).
En los documentos de
RandomForestRegressor
descubrí 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())
Otra forma de hacer esto es usar
ravel
model = forest.fit(train_fold, train_y.values.reshape(-1,))
También me encontré con esta situación cuando estaba tratando de entrenar un clasificador
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
.
Yo tuve el mismo problema.
El problema era que las etiquetas estaban en formato de columna mientras lo esperaba en una fila.
use
np.ravel()
knn.score(training_set, np.ravel(training_labels))
Espero que esto lo resuelva.
use el siguiente código:
model = forest.fit(train_fold, train_y.ravel())
si todavía recibe una bofetada por error tan idéntica como a continuación?
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)