sklearns.metrics.classification_report 和 sklearns.metrics.f1_score 中每个 F1 分数值与二进制混淆矩阵的差异
Differences between each F1-score values in sklearns.metrics.classification_report and sklearns.metrics.f1_score with a binary confusion matrix
我有(真)布尔值和预测布尔值,如:
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
的 4 个值(0.695652
、0.86
、0.70
、0.80
)。我想知道每个值之间有什么区别以及它们是如何计算的。
我认为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
In finding the avg / total, formula uses this values like you said in
the comment.
我有(真)布尔值和预测布尔值,如:
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
的 4 个值(0.695652
、0.86
、0.70
、0.80
)。我想知道每个值之间有什么区别以及它们是如何计算的。
我认为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
In finding the avg / total, formula uses this values like you said in the comment.