it-swarm.com.de

Ein Spaltenvektor y wurde übergeben, als ein 1d-Array erwartet wurde

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?

48
Klausos Klausos

Ändern Sie diese Zeile: 

model = forest.fit(train_fold, train_y)

zu:

model = forest.fit(train_fold, train_y.values.ravel())
90

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 import numpy as np.

12
Simon Leung

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)
8
Coral

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,))
0
sushmit