概述
TP: True Positive
FN: False Negative
FP: False Positive
TN: True Negative
二分类任务中的TP/TN/FP/FN容易理解和求取,但实际中常常需要通过求多分类任务中某类别的TP/TN/FP/FN进而计算其他性能参数,如recall,precision,f1-score,TPR,TNR等等。本文主要讲解TP/TN/FP/FN的计算。
在多分类任务中,各类别的TP/TN/FP/FN计算可由下图概括:
为了方便理解,举个例子说明。
假设某三分类任务的混淆矩阵如下:
类别1(记为label1)的TP/TN/FP/FN计算如下图所示:
label1_TP=9;
label1_TN=6+1+1+7=15;
label1_FP=0+1=1;
label1_FN=3+2=5;
类别2的TP/TN/FP/FN计算下图所示:
label2_TP=6;
label2_TN=9+2+1+7=19;
label2_FP=3+1=4;
label2_FN=0+1=1;
同理,类别3的TP/TN/FP/FN计算如下:
label3_TP=7;
label3_TN=9+3+0+6=18;
label3_FP=2+1=3;
label3_FN=1+1=2;
此外,附上python代码方便大家。
import numpy as np
# 1-混淆矩阵
confusion_matrix = np.array(
[[9, 3, 2],
[ 0, 6, 1],
[ 1, 1, 7]])
# 2-TP/TN/FP/FN的计算
FP = confusion_matrix .sum(axis=0) - np.diag(confusion_matrix )
FN = confusion_matrix .sum(axis=1) - np.diag(confusion_matrix )
TP = np.diag(confusion_matrix )
TN = confusion_matrix .sum() - (FP + FN + TP)
FP = FP.astype(float)
FN = FN.astype(float)
TP = TP.astype(float)
TN = TN.astype(float)
print(TP)
print(TN)
print(FP)
print(FN)
# 3-其他的性能参数的计算
TPR = TP/(TP+FN) # Sensitivity/ hit rate/ recall/ true positive rate
TNR = TN/(TN+FP) # Specificity/ true negative rate
PPV = TP/(TP+FP) # Precision/ positive predictive value
NPV = TN/(TN+FN) # Negative predictive value
FPR = FP/(FP+TN) # Fall out/ false positive rate
FNR = FN/(TP+FN) # False negative rate
FDR = FP/(TP+FP) # False discovery rate
ACC = TP/(TP+FN) # accuracy of each class
print(TPR)
print(TNR)
print(PPV)
print(NPV)
print(FPR)
print(FNR)
print(FDR)
print(ACC)
如果有错误欢迎指出。
最后
以上就是无语黄蜂为你收集整理的多分类中TP/TN/FP/FN的计算的全部内容,希望文章能够帮你解决多分类中TP/TN/FP/FN的计算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复