我有(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
我看到f1-score
(0.695652
,0.86
,0.70
,0.80
)的4个值。我想知道每个值之间的差异以及它们的计算方式。
答案 0 :(得分:1)
我认为0.695652
与0.70
是一回事。在scikit-learn中f1_score
documentation解释了在默认模式下: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
在找到平均值/总数时,公式使用您所说的这个值 评论。