keras :: Как найти классовую точность? - PullRequest
1 голос
/ 18 апреля 2020

У меня data-set содержит два типа объектов. Скажем "cat" и "dog". Я хочу найти точность class-wise в Керасе. Это то, что я сделал;

from sklearn.metrics import classification_report
import numpy as np
Y_test = np.argmax(y_val, axis=1) # Convert one-hot to index
y_pred = model.predict_classes(x_val)
print(classification_report(Y_test, y_pred))

Я получил такой вывод:

enter image description here

С этого выхода (0 , 1) как узнать, что принадлежит классу cat, а что принадлежит классу dog?

1 Ответ

0 голосов
/ 19 апреля 2020

Точность может быть рассчитана на уровне всей модели, а не на уровне класса, где в качестве точности можно восстановить значения на уровне класса.

Для вычисления точности вы можете использовать приведенную ниже функцию

keras.metrics.accuracy(y_true, y_pred)

Вы можете добавить target_names аргумент к вашему classification_report, как показано ниже, чтобы понимать метки.

target_names = ["Class {}".format(i) for i in range(num_classes)]
print(classification_report(Y_test, y_pred, target_names=target_names))

Существует еще один подход к печати меток и пониманию того, что представляют первый и второй индексы. Вот пример

import numpy as np
from sklearn.preprocessing import LabelBinarizer
from tensorflow.keras.utils import to_categorical

# define example
data = ['dog', 'dog', 'cat', 'dog', 'cat', 'cat', 'dog', 'cat', 'dog', 'dog']

values = np.array(data)

#Binary encode
lb = LabelBinarizer()

labels = lb.fit_transform(values)
labels = to_categorical(labels)
print("which position represents for cat and dog?:")
print("Data is:",data)
print(labels)

Вывод:

which position represents for cat and dog?:
Data is: ['dog', 'dog', 'cat', 'dog', 'cat', 'cat', 'dog', 'cat', 'dog', 'dog']
[[0. 1.]
 [0. 1.]
 [1. 0.]
 [0. 1.]
 [1. 0.]
 [1. 0.]
 [0. 1.]
 [1. 0.]
 [0. 1.]
 [0. 1.]]

Из вывода, который вы можете легко понять, первый индекс - для кошки, а второй - для собаки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...