In che modo Keras calcola la precisione?


26

In che modo Keras calcola l'accuratezza dalle probabilità classwise? Ad esempio, nel set di test abbiamo 100 campioni che possono appartenere a una delle due classi. Abbiamo anche un elenco delle probabilità classwise. Quale soglia utilizza Keras per assegnare un campione a una delle due classi?


stai usando model.evaluate in keras?
Hima Varsha,

Sì, sto usando model.evaluate. Più specificamente, model.evaluate_generator.
Raghuram,


Forse correlato a @SO: in che modo Keras valuta l'accuratezza? )
desertnaut,

Risposte:


24

Per la classificazione binaria, il codice per la metrica di precisione è:

K.mean(K.equal(y_true, K.round(y_pred)))

che suggerisce che 0,5 è la soglia per distinguere tra le classi. y_true dovrebbe ovviamente essere 1-hots in questo caso.

È un po 'diverso per la classificazione categoriale:

K.mean(K.equal(K.argmax(y_true, axis=-1), K.argmax(y_pred, axis=-1)))

che significa "con quale frequenza le previsioni hanno il massimo nello stesso punto dei valori reali"

Esiste anche un'opzione per l'accuratezza categoriale di top-k, che è simile a quella sopra, ma calcola la frequenza con cui la classe target rientra nelle previsioni di top-k.


Grazie per la risposta. Ciò significa che anche per la classificazione binaria, le etichette devono essere codificate a caldo?
Raghuram,

@Raghuram No, per la classificazione binaria hai solo bisogno di 0 o 1 come classe, non è necessario codificarli a caldo. Poiché K.mean (K.equal (y_true, K.round (y_pred))) corrisponderà a 2 valori float per ogni caso, quindi deve essere 0 o 1 e non [0,1], [1,0].
Divyanshu Kalra il

Per precisione categorica, utilizzare categorical_accuracy.
Shital Shah,

1
per un problema multi-classe (con più di due classi), c'è una differenza tra l'utilizzo di "accuratezza" vs "categorical_accuracy"
Quetzalcoatl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.