Je dois adapter RandomForestRegressor
à partir de 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 indique:
DataConversionWarning: Un vecteur de colonne y a été passé lorsqu'un tableau 1d était attendu. Modifiez la forme de y en (n_samples), par exemple en utilisant ravel ().
model = forest.fit (train_fold, train_y)
Auparavant, train_y
était une série, maintenant c'est un tableau numpy (c'est un vecteur colonne). Si j'applique train_y.ravel()
, il devient alors un vecteur de ligne et aucun message d'erreur ne s'affiche. L'étape de prédiction prend très longtemps (en réalité, elle ne se termine jamais ...).
Dans la documentation de RandomForestRegressor
j'ai trouvé que train_y
devrait être défini comme y : array-like, shape = [n_samples] or [n_samples, n_outputs]
Avez-vous une idée de la façon de résoudre ce problème?
Changer cette ligne:
model = forest.fit(train_fold, train_y)
à:
model = forest.fit(train_fold, train_y.values.ravel())
utiliser le code ci-dessous:
model = forest.fit(train_fold, train_y.ravel())
si vous obtenez toujours slap par erreur aussi identique que ci-dessous?
Unknown label type: %r" % y
utilisez ce code:
y = train_y.ravel()
train_y = np.array(y).astype(int)
model = forest.fit(train_fold, train_y)
J'ai eu le même problème. Le problème était que les étiquettes étaient dans un format de colonne alors qu'elles l'attendaient dans une rangée . Use np.ravel()
knn.score(training_set, np.ravel(training_labels))
J'espère que cela résout le problème.
Une autre façon de faire est d’utiliser ravel
model = forest.fit(train_fold, train_y.values.reshape(-1,))