2015-05-28 104 views
0

我有(真)布尔值和预测的像布尔值:用二进制混淆矩阵

y_true = np.array([True, True, False, False, False, True, False, True, True, 
     False, True, False, False, False, False, False, True, False, 
     True, True, True, True, False, False, False, True, False, 
     True, False, False, False, False, True, True, False, False, 
     False, True, True, True, True, False, False, False, False, 
     True, False, False, False, False, False, False, False, False, 
     False, True, True, False, True, False, True, True, True, 
     False, False, True, False, True, False, False, True, False, 
     False, False, False, False, False, False, False, True, False, 
     True, True, True, True, False, False, True, False, True, 
     True, False, True, False, True, False, False, True, True, 
     False, False, True, True, False, False, False, False, False, 
     False, True, True, False]) 

y_pred = np.array([False, False, False, False, False, True, False, False, True, 
     False, True, False, False, False, False, False, False, False, 
     True, True, True, True, False, False, False, False, False, 
     False, False, False, False, False, True, False, False, False, 
     False, True, False, False, False, False, False, False, False, 
     True, False, False, False, False, False, False, False, False, 
     False, True, False, False, False, False, False, False, False, 
     False, False, True, False, False, False, False, True, False, 
     False, False, False, False, False, False, False, True, False, 
     False, True, False, False, False, False, True, False, True, 
     True, False, False, False, True, False, False, True, True, 
     False, False, True, True, False, False, False, False, False, 
     False, True, False, False]) 

我使用以下进口

from sklearn.metrics import f1_score, classification_report, confusion_matrix 

混淆矩阵的样子:

print(confusion_matrix(y_true, y_pred)) 

[[67 0] 
[21 24]] 

我做:

print("f1_score: %f" % f1_score(y_true, y_pred)) 
print(classification_report(y_true, y_pred)) 

我得到:

f1_score: 0.695652 
      precision recall f1-score support 

     False  0.76  1.00  0.86  67 
     True  1.00  0.53  0.70  45 

avg/total  0.86  0.81  0.80  112 

我看到的f1-score0.6956520.860.700.80)4个值。我想知道每个值之间的区别以及它们是如何计算的。

回答

1

我认为0.6956520.70是一样的。在scikit-learn f1_scoredocumentation中解释了在默认模式下:F1分数给出positive class二进制分类。

此外,您可以使用F1得分的公式轻松达到0.86的得分。 F1得分的制剂是

F1 = 2 * (precision * recall)/(precision + recall) 

编辑:

混淆矩阵是类似的东西:

    Prediction 
        FALSE | TRUE 
True Value FALSE 67  0 
      TRUE  21  24 

67 = True Negative, 0 = False Negative 
21 = False Positive, 24 = True Positive 

在找到平均/总,公式使用此值等你在 说的评论。

+0

好的,谢谢。我注意到'f1_score(〜y_true,〜y_pred)= 0.86451612903225816'但是如何得到0.80?它似乎是'(45 * f1_score(y_true,y_pred)+ 67 * f1_score(〜y_true,〜y_pred))/(67 + 45)' – scls

+0

我认为你对你的猜测是正确的。 –