Расчет точности и отзыва по классу - PullRequest
2 голосов
/ 28 октября 2019

Я работаю с набором данных двух классов, 2 и 4, где 2 - это положительный класс, а 4 - это отрицательный класс (в отношении анализа настроений).

У меня естьнабор прогнозов из моей модели и набор фактических значений. Мне нужно определить Точность и Отзыв для каждого класса (оценки P и R для положительного и отрицательного класса).

Код ниже:

preds = [4, 4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  2,  4,  4,  4,  4,  4,  2,  2,  4,  4,  4,  4,  2]
actuals = [2,   4,  2,  4,  2,  4,  2,  4,  4,  4,  2,  4,  4,  4,  2,  2,  4,  4,  2,  4,  4,  4,  4,  4,  4,  2]

true_pos = 0
true_neg = 0
false_pos = 0
false_neg = 0
for pred, act in zip(preds, actuals):
    # 2 is positive, 4 is negative

    if(pred == 2 & act == 2):
        true_pos += 1

    elif(pred == 4 & act == 4):
        true_neg += 1

    elif(pred == 2 & act == 4):
        false_pos += 1

    elif(pred == 4 & act == 2):
        false_neg += 1

print("True Positive: ", true_pos)
print("True Negative: ", true_neg)
print("False Positive: ", false_neg)
print("False Negative: ", false_neg)

Что дает:

True Positive:  1
True Negative:  14
False Positive:  0
False Negative:  0

Однако я действительно застрял в том, как я должен рассчитывать эти показатели по классам. Этот пост SO показывает, как это сделать для всего, но не для класса.

В идеале я хотел бы получить такой вывод:

Class 2 P Score: x
Class 2 R Score: x
Class 4 P Score: x 
Class 4 R Score: x

, ноЯ не уверен, как это вычислить.

Как я могу адаптировать свою текущую логику, чтобы проверять оценки точности и отзыва для каждого класса с вышеуказанными данными?

1 Ответ

1 голос
/ 28 октября 2019

Мне кажется, я знаю, в каком направлении вам указывать:
https://scikit -learn.org / stable / modules / generate / sklearn.metrics.confusion_matrix.html
Это должно бытьчто ты ищешь.

Обратитесь к ссылке в Википедии: https://en.wikipedia.org/wiki/Confusion_matrix
и прочтите, как это использовать.

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