Muszę zmieścić RandomForestRegressor
od sklearn.ensemble
.
forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)
Ten kod zawsze działał, dopóki nie wykonałem wstępnego przetwarzania danych ( train_y
). Komunikat o błędzie mówi:
DataConversionWarning: przekazano wektor-kolumnę y, gdy oczekiwano tablicy 1d. Zmień kształt y na (n_samples,), na przykład za pomocą ravel ().
model = forest.fit (train_fold, train_y)
Wcześniej train_y
była to seria, teraz jest to tablica numpy (jest to wektor kolumnowy). Jeśli zastosuję train_y.ravel()
, staje się wektorem wierszowym i nie pojawia się żaden komunikat o błędzie, a krok przewidywania zajmuje bardzo dużo czasu (w rzeczywistości nigdy się nie kończy ...).
W dokumentach RandomForestRegressor
znalazłem, że train_y
powinno to być zdefiniowane jako y : array-like, shape = [n_samples] or [n_samples, n_outputs]
Każdy pomysł, jak rozwiązać ten problem?
źródło
train_fold.shape
itrain_y.shape
?train_y
danych, aby upewnić się, że przetwarzanie wstępne ich nie uszkodziło?RF_tuned_parameters
dla nas.Odpowiedzi:
Zmień tę linię:
do:
Edytować:
.values
poda wartości w tablicy. (kształt: (n, 1).ravel
przekonwertuje ten kształt tablicy na (n,)źródło
ravel()
robi to: kiedy maszy.shape == (10, 1)
, używający.ravel().shape == (10, )
. Słowami ... spłaszcza tablicę.Z taką sytuacją spotkałem się również, gdy próbowałem wytrenować klasyfikator KNN . ale wydaje się, że ostrzeżenie zniknęło po zmianie:
knn.fit(X_train,y_train)
na
knn.fit(X_train, np.ravel(y_train,order='C'))
Przed tą linią użyłem
import numpy as np
.źródło
.ravel()
podejścia mój wektor kolumnowy był konwertowany na wektor wierszowy, a nie tablicę, ale ta poprawka działała dla mnie.Miałem ten sam problem. Problem polegał na tym, że etykiety były w formacie kolumny, podczas gdy oczekiwał tego w wierszu. posługiwać się
np.ravel()
Mam nadzieję, że to rozwiązuje problem.
źródło
np.ravel()
?użyj poniższego kodu:
jeśli nadal otrzymujesz policzek przez pomyłkę tak samo jak poniżej?
użyj tego kodu:
źródło
Innym sposobem na to jest użycie
ravel
źródło
Dzięki Neuraxle możesz łatwo rozwiązać ten problem:
Neuraxle to podobny do sklearn framework do strojenia hiperparametrów i AutoML w projektach uczenia głębokiego!
źródło
źródło
Y = y.wartości [:, 0]
Y - formated_train_y
y - train_y
źródło