基于混淆矩阵计算多分类的准确率和召回率

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wen_fei/article/details/83346750

定义

TP-将正类预测为正类

FN-将正类预测为负类

FP-将负类预测位正类

TN-将负类预测位负类

准确率(正确率)=所有预测正确的样本/总的样本 (TP+TN)/总

精确率= 将正类预测为正类 / 所有预测为正类 TP/(TP+FP)

召回率 = 将正类预测为正类 / 所有正真的正类 TP/(TP+FN)

多分类下计算

应用多分类问题,把每个类别单独视为”正“,所有其它类型视为”负“,考虑如下的混淆矩阵:
M = [
[14371, 6500, 9, 0, 0, 2, 316],
[5700, 22205, 454, 20, 0, 11, 23],
[0, 445, 3115, 71, 0, 11, 0],
[0, 0, 160, 112, 0, 0, 0],
[0, 888, 39, 2, 0, 0, 0],
[0, 486, 1196, 30, 0, 74, 0],
[1139, 35, 0, 0, 0, 0, 865]
]
分别计算各个类别的精确率与召回率:

n = len(M)
for i in range(len(M[0])):
    rowsum, colsum = sum(M[i]), sum(M[r][i] for r in range(n))
    try:
        print 'precision: %s' % (M[i][i]/float(colsum)), 'recall: %s' % (M[i][i]/float(rowsum))
    except ZeroDivisionError:
        print 'precision: %s' % 0, 'recall: %s' %0

参考

https://www.zhihu.com/question/56403549/answer/151310817

猜你喜欢

转载自blog.csdn.net/wen_fei/article/details/83346750