当有真阳性、真阴性、假阳性和假阴性时,我如何计算支持度?

How do I calculate support when having true posives, true negatives, false positives and false negatives?

不知何故,我对我的二进制 classifier 的评估并没有加起来。这是对我的模型的评价:

True Positive(TP)  =  75 
False Positive(FP) =  64 
True Negative(TN)  =  47 
False Negative(FN) =  34 
Accuracy of the binary classification = 0.554545 
precision: [0.58024691 0.53956835] 
recall: [0.42342342 0.68807339] 
fscore: [0.48958333 0.60483871] 
support: [111 109] 

到目前为止它看起来不错,但我只是意识到它并没有真正加起来。正如我所见,它应该支持 return 每个 class 中的总真实值。因为我只有两个,75+47=122 而不是真正的 class 的 111。我知道这里 TP 和 FN 相加得到 111,TN 和 FP 相应地得到 109。还是我没有正确理解支持?在这里,第一个 class 假阳性被添加到真阴性中。这没有意义,是吗?我将如何解释这个数字?

所以要么我不明白支持是什么意思,要么我的代码有误,但我查看了文档并确保值 returned 也相应地分配给了混淆矩阵作为 precision_recall_fscore_support。所以请在这里解释我做错了什么:

from sklearn.metrics import confusion_matrix 
from sklearn.metrics import precision_recall_fscore_support as score  
def evaluation(y_test, y_pred):
     cm = confusion_matrix(y_test, y_pred)
     TN, FP, FN, TP = confusion_matrix(y_test, y_pred).ravel()
     print('True Positive(TP)  = ', TP)
     print('False Positive(FP) = ', FP)
     print('True Negative(TN)  = ', TN)
     print('False Negative(FN) = ', FN)
     accuracy =  (TP+TN) /(TP+FP+TN+FN)
     print('Accuracy of the binary classification = {:0.6f}'.format(accuracy))
     precision, recall, fscore, support = score(y_test, y_pred)
     print('precision: {}'.format(precision))
     print('recall: {}'.format(recall))
     print('fscore: {}'.format(fscore))
     print('support: {}'.format(support))

evaluation(y_test, prediction > 0.5)

支持度是您拥有的真实正面和负面案例的数量。在您的示例中,有 109 (75+34) 个真正的正例和 111 (64+47) 个真正的负例。