Eu preciso para se ajustar RandomForestRegressor
a partir sklearn.ensemble
.
forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)
Este código sempre funcionou até que eu fiz algum pré-processamento de dados ( train_y
). A mensagem de erro diz:
DataConversionWarning: Um vetor de coluna y foi passado quando uma matriz 1d era esperada. Altere a forma de y para (n_samples,), por exemplo, usando ravel ().
model = forest.fit (train_fold, train_y)
Anteriormente train_y
era uma série, agora é uma matriz numpy (é um vetor coluna). Se eu aplicar train_y.ravel()
, ele se torna um vetor linha e nenhuma mensagem de erro aparece, através da etapa de predição leva muito tempo (na verdade, nunca termina ...).
Na documentação de RandomForestRegressor
achei que train_y
deveria ser definido como y : array-like, shape = [n_samples] or [n_samples, n_outputs]
Alguma ideia de como resolver esse problema?
fonte
train_fold.shape
etrain_y.shape
?train_y
dados para garantir que o pré-processamento não os corrompeu?RF_tuned_parameters
para nós, por favor.Respostas:
Mude esta linha:
para:
Editar:
.values
fornecerá os valores em uma matriz. (forma: (n, 1).ravel
irá converter essa forma de matriz em (n,)fonte
ravel()
faz é: quando você temy.shape == (10, 1)
, usandoy.ravel().shape == (10, )
. Em palavras ... ele achata uma matriz.Eu também encontrei essa situação quando estava tentando treinar um classificador KNN . mas parece que o aviso desapareceu depois que mudei:
knn.fit(X_train,y_train)
para
knn.fit(X_train, np.ravel(y_train,order='C'))
À frente desta linha eu usei
import numpy as np
.fonte
.ravel()
abordagem, meu vetor de coluna era um conversor para um vetor de linha em vez de uma matriz, mas essa correção funcionou para mim.Eu tive o mesmo problema. O problema era que os rótulos estavam em um formato de coluna enquanto ele esperava em uma linha. usar
np.ravel()
Espero que isso resolva isso.
fonte
np.ravel()
?use o código abaixo:
se você ainda está recebendo tapa por erro tão idêntico como abaixo?
use este código:
fonte
Outra maneira de fazer isso é usar
ravel
fonte
Com o neuraxle , você pode resolver isso facilmente:
Neuraxle é uma estrutura semelhante a sklearn para ajuste de hiperparâmetros e AutoML em projetos de aprendizado profundo!
fonte
fonte
Y = y.values [:, 0]
Y - formated_train_y
y - train_y
fonte