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.?
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
.