2015-12-08 4 views
23

Ich muss RandomForestRegressor von sklearn.ensemble passen.Ein Spaltenvektor y wurde übergeben, als ein 1d-Array erwartet wurde

forest = ensemble.RandomForestRegressor(**RF_tuned_parameters) 
model = forest.fit(train_fold, train_y) 
yhat = model.predict(test_fold) 

Dieser Code immer gearbeitet, bis ich eine Vorverarbeitung der Daten (train_y) hergestellt. Die Fehlermeldung lautet:

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().

model = forest.fit(train_fold, train_y)

Zuvor train_y eine Serie war, jetzt ist es numpy Array (es ist ein Spaltenvektor). Wenn ich train_y.ravel() anwende, wird es zu einem Zeilenvektor und es wird keine Fehlermeldung angezeigt, da der Vorhersageschritt sehr lange dauert (tatsächlich wird er nie beendet ...).

In der Dokumentation von RandomForestRegressor fand ich, dass train_y sollte als y : array-like, shape = [n_samples] or [n_samples, n_outputs] Jede Idee definiert werden, wie dieses Problem zu lösen?

+0

was 'train_fold.shape' und' train_y.shape'? – Alexander

+0

@Alexander: train_fold: Tupel (749904,24) ... Zug: y.Ravel(): Tupel (749904,) –

+0

Sieht gut aus. Haben Sie versucht, 100 Zeilen der Daten zu trainieren, um sicherzustellen, dass sie richtig funktionieren (da Sie gesagt haben, dass sie nie fertig sind)? Haben Sie auch den Inhalt Ihrer 'train_y'-Daten überprüft, um sicherzustellen, dass die Vorverarbeitung nicht beschädigt wurde? – Alexander

Antwort

46

Ändern Sie diese Zeile:

model = forest.fit(train_fold, train_y) 

zu:

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

Jemand könnte erklären, was sich tatsächlich ändert. –

+0

Attributfehler: 'numpy.ndarray 'Objekt hat kein Attribut' Werte ' –

+1

Wenn Sie ein numpy.darray haben, verwenden Sie stattdessen train_y.ravel(). –

2

Verwendung unter Code:

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

wenn Sie noch durch Fehler immer Schlag wie unten als identisch?

Unknown label type: %r" % y 

Verwendung dieser Code:

y = train_y.ravel() 
train_y = np.array(y).astype(int) 
model = forest.fit(train_fold, train_y) 
+2

lol. "Slap Fehler" –

Verwandte Themen