2015-05-28 127 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

我認爲你對你的猜測是正確的。 –