Я работаю с набором данных двух классов, 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
, ноЯ не уверен, как это вычислить.
Как я могу адаптировать свою текущую логику, чтобы проверять оценки точности и отзыва для каждого класса с вышеуказанными данными?