【问题标题】:How to calculate average TPR, TNR, FPR, FNR - Multiclass Classification如何计算平均 TPR、TNR、FPR、FNR - 多类分类
【发布时间】:2020-05-16 00:59:09
【问题描述】:

如何在数据集不平衡的情况下计算平均 TPR、TNR、FPR、FNR?

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

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

以及如何计算 3.54224720e-04 等于 .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)

【问题讨论】:

  • TPR 中的 R 代表召回 ??
  • R 表示率 - 真阳性率
  • 1.您是否有来自不同运行的多个 TPR,并且您希望最终得到一个? 2. 不平衡数据集是什么意思?为什么它对计算很重要?
  • 在我的数据中有 4 个类实例。如果您看到碎石镜头,则每个班级的 TPR 将分别出现。关于平衡和不平衡计算之间有什么区别,我有点困惑。我没有从这里考虑准确性,关于准确性,我确实将计算正确分类的实例与不正确的实例分开计算,因为不平衡数据集 print("Accuracy Score:" + str(accuracy_score(yTest.argmax(axis=1), yPred.argmax(axis =1))))。谢谢

标签: python machine-learning confusion-matrix multiclass-classification


【解决方案1】:

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

如果您想手动计算它们,一种方法(微)是从您的四个不同输出中获取不同的 TP、FN、FP 和 TN 值并将它们汇总在一起,然后计算您的指标。

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

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

更新:

如文档所示:

加权平均值:计算每个标签的指标,并通过支持度(每个标签的真实实例数)找到它们的加权平均值。这会改变“宏观”以解决标签不平衡问题;它可能导致 F 分数不在精确率和召回率之间。

this question 也是相关的。

对于加权指标,您分别计算 4 个类中的每个类的每个指标。有了每个类中的实例数,您就可以计算加权平均指标。这张图片显示了加权精度的方程式:

【讨论】:

  • 如果您需要示例,请告诉我以编辑我的答案。
  • 我想提供加权平均 TP、FP、TN、FN pls。你能帮我如何从我现有的方法和代码中计算出来吗?并且请如何计算 3.54224720e-04 它等于 .000354224720 ?
  • 是的,这两个数字相等。我用例子更新了答案。
猜你喜欢
  • 2017-12-16
  • 2019-09-29
  • 2015-01-05
  • 2013-09-01
  • 2018-04-21
  • 2015-08-09
  • 2019-06-26
  • 2019-08-22
  • 2015-08-28
相关资源
最近更新 更多