Jak Keras oblicza dokładność?


26

Jak Keras oblicza dokładność na podstawie prawdopodobieństw klasowych? Powiedzmy, na przykład, że mamy 100 próbek w zestawie testowym, które mogą należeć do jednej z dwóch klas. Mamy również listę klasowych probabilitów. Jakiego progu używa Keras do przypisania próbki do jednej z dwóch klas?


używasz model.evaluate w keras?
Hima Varsha

Tak, używam model.evaluate. Mówiąc dokładniej, model.evaluate_generator.
Raghuram


Prawdopodobnie powiązane @SO: Jak Keras ocenia dokładność? )
desertnaut

Odpowiedzi:


24

W przypadku klasyfikacji binarnej kod metryki dokładności to:

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

co sugeruje, że 0,5 jest progiem do rozróżnienia klas. W tym przypadku y_true powinno oczywiście wynosić 1-hots.

Trochę inaczej jest w przypadku klasyfikacji kategorycznej:

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

co oznacza „jak często prognozy mają maksimum w tym samym miejscu, co wartości prawdziwe”

Istnieje również opcja dokładności jakościowej najwyższego k, która jest podobna do powyższej, ale oblicza, jak często klasa docelowa mieści się w przewidywaniach najwyższego k.


Dziękuję za Twoją odpowiedź. Czy to oznacza, że ​​nawet w przypadku klasyfikacji binarnej etykiety muszą być kodowane na gorąco?
Raghuram

@Raghuram Nie, do binarnej klasyfikacji potrzebujesz po prostu 0 lub 1 jako klasy, nie ma potrzeby kodowania ich na gorąco. Ponieważ K.mean (K.equal (y_true, K.round (y_pred))) dopasuje 2 wartości zmiennoprzecinkowe dla każdego przypadku, więc musi to być 0 lub 1, a nie [0,1], [1,0].
Divyanshu Kalra

Aby uzyskać dokładność jakościową, użyj categorical_accuracy.
Shital Shah

1
w przypadku problemu wieloklasowego (z więcej niż dwiema klasami), czy istnieje różnica między używaniem „dokładności” a „dokładności kategorialnej”
Quetzalcoatl
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.