Как Keras рассчитывает точность?


26

Как Keras рассчитывает точность по классовым вероятностям? Например, у нас есть 100 образцов в тестовом наборе, которые могут принадлежать одному из двух классов. У нас также есть список классовых вероятностей. Какой порог использует Keras, чтобы назначить выборку любому из двух классов?


вы используете model.evaluate в керасе?
Хима Варша

Да, я использую модель. Более конкретно, model.evaluate_generator.
Рагурам


Возможно связано @SO: Как Keras оценивает точность? )
пустыненав

Ответы:


24

Для двоичной классификации код метрики точности:

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

что говорит о том, что 0,5 является порогом для различия между классами. y_true в этом случае, конечно, должен быть 1-hots.

Это немного отличается для категориальной классификации:

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

что означает «как часто прогнозы имеют максимум в том же месте, что и истинные значения»

Существует также опция для категориальной точности top-k, которая аналогична приведенной выше, но рассчитывает, как часто целевой класс находится в пределах прогнозов top-k.


Спасибо за ответ. Означает ли это, что даже для двоичной классификации метки должны быть в горячем виде?
Raghuram

@Raghuram Нет, для бинарной классификации вам просто нужно 0 или 1 как класс, не нужно их горячо кодировать. Поскольку K.mean (K.equal (y_true, K.round (y_pred))) будет соответствовать 2 значениям с плавающей запятой для каждого случая, поэтому оно должно быть 0 или 1, а не [0,1], [1,0].
Дивьяншу Калра

Для категориальной точности используйте categorical_accuracy.
Шиталь Шах

1
для многоклассовой задачи (с более чем двумя классами), есть ли разница между использованием «точности» и «категориальной точности»
Кецалькоатль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.