![](/img/trans.png)
[英]Why is the 'weighted' average F1 score from sklearns classification report different from the F1 score calculated from the formula?
[英]Differences between each F1-score values in sklearns.metrics.classification_report and sklearns.metrics.f1_score with a binary confusion matrix
我有(true)布爾值和預測的布爾值,例如:
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
我看到的4個值f1-score
( 0.695652
, 0.86
, 0.70
, 0.80
)。 我想知道每個值之間的區別是什么以及如何計算它們。
我認為0.695652
與0.70
是同一回事。 在scikit-learn中, f1_score
文檔解釋了在默認模式下: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
在查找平均/總計時,公式將使用您在注釋中所說的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.