Je dois répondre à RandomForestRegressor
partir sklearn.ensemble
.
forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)
Ce code a toujours fonctionné jusqu'à ce que je fasse un prétraitement des données ( train_y
). Le message d'erreur dit:
DataConversionWarning: Un vecteur de colonne y a été transmis lorsqu'un tableau 1d était attendu. Veuillez changer la forme de y en (n_samples,), par exemple en utilisant ravel ().
model = forest.fit (train_fold, train_y)
Auparavant, train_y
c'était une série, maintenant c'est un tableau numpy (c'est un vecteur de colonne). Si je postule train_y.ravel()
, alors cela devient un vecteur de ligne et aucun message d'erreur n'apparaît, car l'étape de prédiction prend très longtemps (en fait, elle ne se termine jamais ...).
Dans la documentation de RandomForestRegressor
j'ai trouvé que cela train_y
devrait être défini comme y : array-like, shape = [n_samples] or [n_samples, n_outputs]
une idée comment résoudre ce problème?
la source
train_fold.shape
ettrain_y.shape
?train_y
données pour vous assurer que le prétraitement ne les a pas corrompues?RF_tuned_parameters
pour nous s'il vous plaît.Réponses:
Changez cette ligne:
à:
Éditer:
.values
donnera les valeurs dans un tableau. (forme: (n, 1).ravel
convertira cette forme de tableau en (n,)la source
ravel()
fait est: quand vous avezy.shape == (10, 1)
, en utilisanty.ravel().shape == (10, )
. En mots ... cela aplatit un tableau.J'ai également rencontré cette situation lorsque j'essayais de former un classificateur KNN . mais il semble que l'avertissement a disparu après avoir changé:
knn.fit(X_train,y_train)
à
knn.fit(X_train, np.ravel(y_train,order='C'))
En avance sur cette ligne, j'ai utilisé
import numpy as np
.la source
.ravel()
approche, mon vecteur de colonne était un convertisseur en vecteur de ligne plutôt qu'en tableau, mais ce correctif a fonctionné pour moi.J'ai eu le même problème. Le problème était que les étiquettes étaient dans un format de colonne alors qu'il l'attendait dans une ligne. utilisation
np.ravel()
J'espère que cela le résout.
la source
np.ravel()
?utilisez le code ci-dessous:
si vous obtenez toujours slap par erreur aussi identique que ci-dessous?
utilisez ce code:
la source
Une autre façon de faire est d'utiliser
ravel
la source
Avec neuraxle , vous pouvez facilement résoudre ce problème:
Neuraxle est un framework de type sklearn pour le réglage des hyperparamètres et AutoML dans les projets d'apprentissage profond!
la source
la source
Y = y.values [:, 0]
Y - formated_train_y
y - train_y
la source