Точность может быть рассчитана на уровне всей модели, а не на уровне класса, где в качестве точности можно восстановить значения на уровне класса.
Для вычисления точности вы можете использовать приведенную ниже функцию
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.]]
Из вывода, который вы можете легко понять, первый индекс - для кошки, а второй - для собаки.