通过 Class 计算准确率和召回率
Calculating Precision and Recall by Class
我正在使用两个 class 数据集,2
和 4
,其中 2
是正 class,4
是负面 class(关于情绪分析)。
我有一组来自我的模型的预测值和一组实际值。我需要确定每个 class 的 Precision 和 Recall(正负 class 的 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
但是,我真的很困惑我应该如何通过 class 计算这些指标。 This SO post 指示如何为整体执行此操作,而不是 class。
理想情况下,我最终会得到如下输出:
Class 2 P Score: x
Class 2 R Score: x
Class 4 P Score: x
Class 4 R Score: x
但我不确定如何计算。
我如何调整我当前的逻辑以使用上述数据检查每个 class 的精度和召回分数?
我想我知道该给你指出哪个方向了:
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
这应该是你要找的。
参考维基百科link:https://en.wikipedia.org/wiki/Confusion_matrix
并阅读如何使用它。
我正在使用两个 class 数据集,2
和 4
,其中 2
是正 class,4
是负面 class(关于情绪分析)。
我有一组来自我的模型的预测值和一组实际值。我需要确定每个 class 的 Precision 和 Recall(正负 class 的 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
但是,我真的很困惑我应该如何通过 class 计算这些指标。 This SO post 指示如何为整体执行此操作,而不是 class。
理想情况下,我最终会得到如下输出:
Class 2 P Score: x
Class 2 R Score: x
Class 4 P Score: x
Class 4 R Score: x
但我不确定如何计算。
我如何调整我当前的逻辑以使用上述数据检查每个 class 的精度和召回分数?
我想我知道该给你指出哪个方向了:
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
这应该是你要找的。
参考维基百科link:https://en.wikipedia.org/wiki/Confusion_matrix
并阅读如何使用它。