请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多分类如何根据混淆矩阵求准确率、精准率、和召回率?

现在我知道了多分类的混淆矩阵,请问如何根据这个混淆矩阵求出准确率、精准率、和召回率。主要是多分类的混淆矩阵的TP、TN、FP、FN这些不知道怎么算。

正在回答

1回答

对于多分类问题,首先,对于每一个类的精准率(Precision)和召回率(Recall),定义和二分类问题一致,但是计算上不再需要TP,FP,FN等量了:)


比如对A, B, C三类有如下混淆矩阵:

   A  B  C
A 10  1  2
B  2 11  3
C  5  3  8

行表示真值;列表示预测值。


此时,每一类都有自己的精准率和召回率。


精准率表示正确预测X占所有预测X的比例。

所以对于A类来说,Precision(A) = 10 / (10 + 2 + 5) = 10 / 17

所以对于B类来说,Precision(B) = 11 / (1 + 11 + 3) = 11 / 15

所以对于C类来说,Precision(C) = 8 / (2 + 3 + 8) = 8 / 13


召回率表示正确预测X占所有真实X的比例。

所以对于A类来说,Recall(A) = 10 / (10 + 1 + 2) = 10 / 13

所以对于B类来说,Recall(B) = 11 / (2 + 11 + 3) = 11 / 16

所以对于C类来说,Recall(C) = 8 / (5 + 3 + 8) = 8 / 16


在这个基础上,整个算法的精准率和召回率,可以简单地使用平均值法。

即:

Precision = (Precision(A) + Precision(B) + Precision(C)) / 3 = 0.6457

Recall = (Recall(A) + Recall(B) + Recall(C)) / 3 = 0.6522


加油!:)

1 回复 有任何疑惑可以回复我~
  • 提问者 慕运维2948618 #1
    好的。谢谢老师~
    回复 有任何疑惑可以回复我~ 2019-01-03 13:28:55
  • 提问者 慕运维2948618 #2
    我在计算中遇到一点问题。
    请问老师你的例子中,TN(A)是11+3+3+8=25还是TN(A)=11+8=19呢?
    准确度的计算是 预测正确的数量/总数量 对吧。
    但在混淆矩阵中貌似是这样计算的:accuracy = (TP+TN)/(TP+TN+FP+FN);对于二分类,(TP+TN)/(TP+TN+FP+FN) 等于 预测正确的数量/总数量。
    但对于多分类来说,(TP+TN)/(TP+TN+FP+FN) 大于 常规的计算(TP(A)+TP(B)+TP(C))/总的。
    回复 有任何疑惑可以回复我~ 2019-01-04 11:55:52
  • liuyubobobo 回复 提问者 慕运维2948618 #3
    准确度的计算不需要使用TP, FP, FN等概念,直接使用 正确预测数量/总数 就好。TP,FP,FN等概念是用于求precision和recall的:)
    回复 有任何疑惑可以回复我~ 2019-01-04 14:12:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信