gpt4 book ai didi

python - Scikit-learn:如何计算真负

转载 作者:太空狗 更新时间:2023-10-29 21:03:06 26 4
gpt4 key购买 nike

我正在使用 Scikit-learning,我需要从这样的混淆矩阵中计算真阳性 (TP)、假阳性 (FP)、真阴性 (TN) 和假阴性 (FN):

[[2 0 3 4]
[0 4 5 1]
[1 0 3 2]
[5 0 0 4]]

我知道如何计算 TP、FP 和 FN,但我不知道如何获得 TN。有人可以告诉我吗?

最佳答案

我认为你应该以one-vs-the-rest的方式对待这个多类分类(所以每个2x2表i衡量一个二分类问题的性能,即每个obs是否属于标签 i 或不)。因此,您可以计算每个单独标签的 TP、FP、FN、TN。

import numpy as np

confusion_matrix = np.array([[2,0,3,4],
[0,4,5,1],
[1,0,3,2],
[5,0,0,4]])

def process_cm(confusion_mat, i=0, to_print=True):
# i means which class to choose to do one-vs-the-rest calculation
# rows are actual obs whereas columns are predictions
TP = confusion_mat[i,i] # correctly labeled as i
FP = confusion_mat[:,i].sum() - TP # incorrectly labeled as i
FN = confusion_mat[i,:].sum() - TP # incorrectly labeled as non-i
TN = confusion_mat.sum().sum() - TP - FP - FN
if to_print:
print('TP: {}'.format(TP))
print('FP: {}'.format(FP))
print('FN: {}'.format(FN))
print('TN: {}'.format(TN))
return TP, FP, FN, TN

for i in range(4):
print('Calculating 2x2 contigency table for label{}'.format(i))
process_cm(confusion_matrix, i, to_print=True)

Calculating 2x2 contigency table for label0
TP: 2
FP: 6
FN: 7
TN: 19
Calculating 2x2 contigency table for label1
TP: 4
FP: 0
FN: 6
TN: 24
Calculating 2x2 contigency table for label2
TP: 3
FP: 8
FN: 3
TN: 20
Calculating 2x2 contigency table for label3
TP: 4
FP: 7
FN: 5
TN: 18

关于python - Scikit-learn:如何计算真负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31345724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com