2 回答

TA貢獻1816條經驗 獲得超6個贊
問題是,是,TP和FP在你的困惑矩陣交換。
如本二元分類示例中所述,標簽解釋如下:
真陰性 expected=0, predicted=0
真陽性 expected=1, predicted=1
假陰性 expected=1, predicted=0
假陽性 expected=0, predicted=1
對于您的示例,這將是:
## TN TP FN FP
expected = [0]*102 + [1]*60 + [1]*8 + [0]*1
predicted = [0]*102 + [1]*60 + [0]*8 + [1]*1
print ("precision " + '{:.16f}'.format(precision_score(expected, predicted)))
print ("recall " + '{:.16f}'.format(recall_score(expected, predicted)))
print ("accuracy " + '{:.16f}'.format(accuracy_score(expected, predicted)))
precision 0.9836065573770492
recall 0.8823529411764706
accuracy 0.9473684210526315
因此,這些措施符合預期。
該混淆矩陣是記錄在這里
根據定義,混淆矩陣等于已知在組中但預測在組中的觀察數量。因此,在二元分類中,真負數為 C 0,0,假負數為 C 1,0,真正數為 C 1,1,假正數為 C 0,1。
這導致以下結果:
results = confusion_matrix(expected, predicted)
print('TN ' ,results[0][0])
print('TP ' ,results[1][1])
print('FN ' ,results[1][0])
print('FP ' ,results[0][1])
print(results)
TN 102
TP 60
FN 8
FP 1
[[102 1]
[ 8 60]]
所以測量再次是可以的,只是混淆矩陣中的位置不是通常的TP左上角的位置。
補救方法很簡單,只需手動交換TP和TN
(results[0][0],results[1][1]) = (results[1][1],results[0][0])
print(results)
[[ 60 1]
[ 8 102]]

TA貢獻1911條經驗 獲得超7個贊
從你提到的博客中,
您可以看到真正的正數(正數通常表示為 1)是第四象限。我知道常見的混淆矩陣示例會將真陽性作為第一象限,但在博客中它是相反的。
因此,精度分數計算將是 60/61 = 0.9836。
添加回答
舉報