web-dev-qa-db-fra.com

métriques Sklearn pour la classification multiclass

J'ai effectué la classification GaussianNB en utilisant sklearn. J'ai essayé de calculer les métriques en utilisant le code suivant:

print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)

Le score de précision fonctionne correctement, mais le calcul du score de précision indique une erreur comme suit:

ValueError: la cible est multiclass mais average = 'binary'. Veuillez choisir un autre paramètre moyen.

Comme la cible est multiclass, puis-je avoir les scores métriques de précision, rappel, etc.?

22
dino

L'appel de fonction precision_score(y_test, y_pred) équivaut à precision_score(y_test, y_pred, pos_label=1, average='binary'). La documentation ( http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html ) nous dit:

'binaire':

Rapporte uniquement les résultats pour la classe spécifiée par pos_label. Cela ne s'applique que si les cibles (y_ {true, pred}) sont binaires.

Le problème est donc que vos étiquettes ne sont pas binaires, mais probablement encodées à chaud. Heureusement, il existe d'autres options qui devraient fonctionner avec vos données:

precision_score(y_test, y_pred, average=None) renverra les scores de précision pour chaque classe, tandis que

precision_score(y_test, y_pred, average='micro') retournera le rapport total de tp/(tp + fp)

Le pos_label l'argument sera ignoré si vous choisissez une autre option average que binary.

41
ml4294