我是靠谱客的博主 无语黄蜂,最近开发中收集的这篇文章主要介绍多分类中TP/TN/FP/FN的计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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计算可由下图概括:
五分类混淆矩阵中类4的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的计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部