[英]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.