web-dev-qa-db-fra.com

Comment afficher la précision par classe dans Keras?

Caffe peut non seulement imprimer une précision globale, mais aussi une précision par classe.

Dans le journal Keras, il n'y a qu'une précision globale. Il est difficile pour moi de calculer la précision des classes séparées.

Époque 168/200

0s - perte: 0,0495 - acc: 0,9818 - val_loss: 0,0519 - val_acc: 0,9796

Époque 169/200

0s - perte: 0,0519 - acc: 0,9796 - val_loss: 0,0496 - val_acc: 0,9815

Époque 170/200

0s - perte: 0,0496 - acc: 0,9815 - val_loss: 0,0514 - val_acc: 0,9801

Quelqu'un qui sait comment produire une précision par classe en keras?

15
spider

La précision et le rappel sont des mesures plus utiles pour la classification multi-classes (voir définitions ). En suivant l'exemple Keras MNIST CNN (classification à 10 classes), vous pouvez obtenir les mesures par classe à l'aide de classification_report de sklearn.metrics :

from sklearn.metrics import classification_report
import numpy as np

Y_test = np.argmax(y_test, axis=1) # Convert one-hot to index
y_pred = model.predict_classes(x_test)
print(classification_report(Y_test, y_pred))

Voici le résultat:

         precision    recall  f1-score   support

      0       0.99      1.00      1.00       980
      1       0.99      0.99      0.99      1135
      2       1.00      0.99      0.99      1032
      3       0.99      0.99      0.99      1010
      4       0.98      1.00      0.99       982
      5       0.99      0.99      0.99       892
      6       1.00      0.99      0.99       958
      7       0.97      1.00      0.99      1028
      8       0.99      0.99      0.99       974
      9       0.99      0.98      0.99      1009

avg / total   0.99      0.99      0.99     10000
16
desertnaut