Ich muss passen RandomForestRegressor
von sklearn.ensemble
.
forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)
Dieser Code hat immer funktioniert, bis ich Daten vorverarbeitet habe ( train_y
). Die Fehlermeldung lautet:
DataConversionWarning: Ein Spaltenvektor y wurde übergeben, als ein 1d-Array erwartet wurde. Bitte ändern Sie die Form von y in (n_samples,), zum Beispiel mit ravel ().
model = forest.fit (train_fold, train_y)
Früher train_y
war es eine Serie, jetzt ist es ein Numpy-Array (es ist ein Spaltenvektor). Wenn ich mich bewerbe train_y.ravel()
, wird es zu einem Zeilenvektor und es wird keine Fehlermeldung angezeigt. Der Vorhersageschritt dauert sehr lange (tatsächlich wird er nie beendet ...).
In den Dokumenten von RandomForestRegressor
fand ich, dass train_y
dies definiert werden sollte als y : array-like, shape = [n_samples] or [n_samples, n_outputs]
Irgendeine Idee, wie man dieses Problem löst?
quelle
train_fold.shape
undtrain_y.shape
?train_y
Daten überprüft, um sicherzustellen, dass die Vorverarbeitung sie nicht beschädigt hat?RF_tuned_parameters
Sie bitte für uns.Antworten:
Ändern Sie diese Zeile:
zu:
Bearbeiten:
.values
gibt die Werte in einem Array an. (Form: (n, 1).ravel
konvertiert diese Array-Form in (n,)quelle
ravel()
tut ist: wenn Sie habeny.shape == (10, 1)
, mity.ravel().shape == (10, )
. In Worten ... es glättet ein Array.Ich bin auch auf diese Situation gestoßen, als ich versucht habe, einen KNN- Klassifikator zu trainieren . aber es scheint, dass die Warnung weg war, nachdem ich mich geändert hatte:
knn.fit(X_train,y_train)
zu
knn.fit(X_train, np.ravel(y_train,order='C'))
Vor dieser Zeile habe ich verwendet
import numpy as np
.quelle
.ravel()
Ansatzes wurde mein Spaltenvektor eher in einen Zeilenvektor als in ein Array konvertiert, aber dieser Fix funktionierte für mich.Ich hatte das gleiche Problem. Das Problem war, dass die Beschriftungen in einem Spaltenformat vorliegen, während es in einer Zeile erwartet wird. verwenden
np.ravel()
Hoffe das löst es.
quelle
np.ravel()
?Verwenden Sie den folgenden Code:
Wenn Sie immer noch versehentlich einen Schlag bekommen, der genauso identisch ist wie unten?
Verwenden Sie diesen Code:
quelle
Eine andere Möglichkeit ist die Verwendung
ravel
quelle
Mit Neuraxle können Sie dies leicht lösen:
Neuraxle ist ein sklearn-ähnliches Framework für Hyperparameter-Tuning und AutoML in Deep-Learning-Projekten!
quelle
quelle
Y = y.Werte [:, 0]
Y - formated_train_y
y - train_y
quelle