2015-12-08 12 views
23

Devo installare RandomForestRegressor da sklearn.ensemble.È stato inviato un vettore di colonna y quando era previsto un array 1d

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

Questo codice ha funzionato sempre fino a quando ho fatto un po 'di pre-elaborazione dei dati (train_y). Il messaggio di errore dice:

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)

precedenza train_y fu una serie, ora è di matrice NumPy (si tratta di una colonna-vettoriale). Se applico train_y.ravel(), allora diventa un vettore di riga e non appare alcun messaggio di errore, attraverso il passo di predizione richiede molto tempo (in realtà non finisce mai ...).

nella documentazione di RandomForestRegressor ho scoperto che train_y dovrebbero essere definite come y : array-like, shape = [n_samples] or [n_samples, n_outputs] Qualsiasi idea di come risolvere questo problema?

+0

ciò che è '' train_fold.shape' e train_y.shape'? – Alexander

+0

@Alexander: treno_fold: tupla (749904,24) ... treno: y.ravel(): tupla (749904,) –

+0

Sembra buono. Hai provato ad allenare 100 righe di dati per assicurarti che funzioni correttamente (dal momento che hai detto che non è mai finito)? Inoltre, hai esaminato il contenuto dei tuoi dati 'train_y' per assicurarti che la pre-elaborazione non l'abbia corrotta? – Alexander

risposta

46

Modifica questa linea:

model = forest.fit(train_fold, train_y) 

a:

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

Qualcuno potrebbe spiegare cosa effettivamente cambia. –

+0

AttributeError: 'numpy.L'oggetto 'ndarray' non ha attributi 'valori' –

+1

Se hai un numpy.ndarray, usa invece train_y.ravel(). –

2

uso sottostante Codice:

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

se si sta ancora ricevendo schiaffo da un errore come identici, come di seguito?

Unknown label type: %r" % y 

uso di questo codice:

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

lol. 'errore di schiaffo' –