如何计算平均TPR、TNR、FPR、FNR多类分类

2024-10-16 20:46:52 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here在数据集不平衡的情况下,如何计算平均TPR、TNR、FPR、FNR

示例FPR:[3.54224720e-04 0.00000000 E+00 1.59383505e-05 0.00000000 E+00] 那么,我可以计算4类的和除以4吗

TPR:[3.54224720e-04+0.00000000e+00+1.59383505e-05+0.00000000e+00]/4=0.99966

如何计算3.54224720e-04等于0.000354224720

多谢各位

FP = np.sum(matrix, axis=0) - np.diag(matrix)
FN = np.sum(matrix, axis=1) - np.diag(matrix)
TP = np.diag(matrix)
TN = np.sum(matrix) - (FP + FN + TP)

# True Positive rate
TPR = TP/(TP+FN)
print("TPR:", TPR)
# True Negative Rate
TNR = TN/(TN+FP)
print("TNR:", TNR)
# False Positive Rate
FPR = FP/(FP+TN)
print("FPR:", FPR)
# False Negative Rate
FNR = FN/(TP+FN)
print("FNR:", FNR)

# Overall accuracy
ACC = (TP+TN)/(TP+FP+FN+TN)
print("ACC :", ACC)

Tags: ratenpmatrixtndiagfnaccsum
1条回答
网友
1楼 · 发布于 2024-10-16 20:46:52

有不同的方法来衡量指标的平均值。如果您检查包,例如sklearn,您会看到可以提供多个参数。微观、宏观、加权等

如果您想手动计算它们,一种方法(微型)是从四个不同的输出中获得不同的TP、FN、FP和TN值,并将它们相加,然后计算度量

所以,你应该真正理解你的问题,看看哪一个是有意义的。大多数情况下,在数据不平衡的情况下,最好使用加权平均值。请记住,如果您有任何基线计算,您必须使用完全相同的方法来计算这些值,以进行公平比较,因为不同的平均方法之间可能存在巨大差异

是的,这两个数字是相等的

更新:

如文件所示:

Weighted average: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.

this question也是相关的

对于加权度量,您分别计算4个类中每个类的每个度量。根据每个类中的实例数,计算加权平均度量。此图显示了加权精度的等式:

enter image description here

相关问题 更多 >