J'essaie d'utiliser l'argument log_loss
dans le paramètre scoring
de GridSearchCV
pour régler ce classificateur multi-classes (6 classes). Je ne comprends pas comment lui donner un paramètre label
. Même si je lui ai donné sklearn.metrics.log_loss
, cela changerait pour chaque itération dans la validation croisée, donc je ne comprends pas comment lui donner le paramètre labels
?Comment utiliser `log_loss` dans` GridSearchCV` avec des étiquettes multi-classes dans Scikit-Learn (sklearn)?
J'utilise Python v3.6
et Scikit-Learn v0.18.1
Comment puis-je utiliser avec GridSearchCV
log_loss
avec ajustement du modèle multi-classe?
Ma représentation de la classe:
1 31
2 18
3 28
4 19
5 17
6 22
Name: encoding, dtype: int64
Mon code:
param_test = {"criterion": ["friedman_mse", "mse", "mae"]}
gsearch_gbc = GridSearchCV(estimator = GradientBoostingClassifier(n_estimators=10),
param_grid = param_test, scoring="log_loss", n_jobs=1, iid=False, cv=cv_indices)
gsearch_gbc.fit(df_attr, Se_targets)
est ici la fin de queue de l'erreur et le plein est ici https://pastebin.com/1CshpEBN:
ValueError: y_true contains only one label (1). Please provide the true labels explicitly through the labels argument.
Mise à jour : Il suffit d'utiliser cela pour faire le meilleur buteur basé sur basé sur @Grr
log_loss_build = lambda y: metrics.make_scorer(metrics.log_loss, greater_is_better=False, needs_proba=True, labels=sorted(np.unique(y)))
Imprimez vos 'Se_targets' ici. Et aussi jeter un oeil à http://scikit-learn.org/stable/modules/model_evaluation.html#multilabel-ranking-metrics –