首页 > 解决方案 > 按类别计算精度和召回率

问题描述

我正在使用两个类别的数据集,2正面类别4在哪里,负面类别在哪里(关于情绪分析)。24

我有一组来自我的模型的预测和一组实际值。我需要确定每个类的精确率和召回率(正类和负类的 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

但我不确定如何计算。

如何调整我当前的逻辑以使用上述数据检查每个班级的精确度和召回率分数?

标签: pythonpython-3.xprecision-recall

解决方案


我想我知道该指向哪个方向:
https
://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html 这应该是您正在寻找的。

请参阅维基百科链接:https
://en.wikipedia.org/wiki/Confusion_matrix 并阅读如何使用它。


推荐阅读