Ich muss RandomForestRegressor
aus sklearn.ensemble
passen.
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 eine Vorverarbeitung der Daten vorgenommen habe (train_y
) . In der Fehlermeldung wird Folgendes angezeigt:
DataConversionWarning: Ein Spaltenvektor y wurde übergeben, als ein 1d-Array erwartet wurde. Ändern Sie die Form von y in (n_samples,), zum Beispiel mit ravel ().
model = forest.fit (train_fold, train_y)
Früher war train_y
eine Serie, jetzt ist es ein numpy-Array (es ist ein Spaltenvektor). Wenn ich train_y.ravel()
anwende, wird es zu einem Zeilenvektor und es erscheint keine Fehlermeldung. Durch den Vorhersageschritt dauert es sehr lange (tatsächlich wird es nie beendet ...).
In den Dokumenten von RandomForestRegressor
fand ich, dass train_y
als y : array-like, shape = [n_samples] or [n_samples, n_outputs]
.__ definiert werden sollte. Haben Sie eine Idee, wie Sie dieses Problem lösen können?
Ändern Sie diese Zeile:
model = forest.fit(train_fold, train_y)
zu:
model = forest.fit(train_fold, train_y.values.ravel())
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)
zuknn.fit(X_train, np.ravel(y_train,order='C'))
Vor dieser Zeile habe ich import numpy as np
.
verwenden Sie den folgenden Code:
model = forest.fit(train_fold, train_y.ravel())
wenn Sie immer noch aus Versehen einen Schlag wie unten erhalten?
Unknown label type: %r" % y
verwenden Sie diesen Code:
y = train_y.ravel()
train_y = np.array(y).astype(int)
model = forest.fit(train_fold, train_y)
Ich hatte das gleiche Problem. Das Problem bestand darin, dass die Beschriftungen in einem Spaltenformat waren, während erwartet wurde, dass sie in einer Reihe waren Use np.ravel()
knn.score(training_set, np.ravel(training_labels))
Hoffe, das löst es.
Eine andere Möglichkeit ist, ravel
zu verwenden.
model = forest.fit(train_fold, train_y.values.reshape(-1,))