基於混淆矩陣計算多分類的準確率和召回率
阿新 • • 發佈:2018-11-20
定義
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