当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn f1_score用法及代码示例


本文简要介绍python语言中 sklearn.metrics.f1_score 的用法。

用法:

sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')

计算 F1 分数,也称为平衡 F-score 或 F-measure。

F1 分数可以解释为准确率和召回率的调和平均值,其中 F1 分数在 1 时达到其最佳值,在 0 时达到最差分数。准确率和召回率对 F1 分数的相对贡献是相等的。 F1分数的公式是:

F1 = 2 * (precision * recall) / (precision + recall)

在多类和多标签情况下,这是每个类的 F1 分数的平均值,其权重取决于 average 参数。

在用户指南中阅读更多信息。

参数

y_true一维数组,或标签指示符数组/稀疏矩阵

基本事实(正确)目标值。

y_pred一维数组,或标签指示符数组/稀疏矩阵

分类器返回的估计目标。

labels类似数组,默认=无

average != 'binary' 时要包含的标签集,如果 average is None 则它们的顺序。可以排除数据中存在的标签,例如计算忽略多数负类的多类平均值,而数据中不存在的标签将导致宏观平均值中的 0 个分量。对于多标签目标,标签是列索引。默认情况下,y_truey_pred 中的所有标签都按排序顺序使用。

pos_labelstr 或 int,默认 = 1

如果average='binary' 并且数据是二进制的,则要报告的类。如果数据是多类或多标签的,这将被忽略;设置 labels=[pos_label]average != 'binary' 将仅报告该标签的分数。

average{‘micro’, ‘macro’, ‘samples’,'加权', ‘binary’} 或无,默认='二进制'

多类/多标签目标需要此参数。如果 None ,则返回每个类的分数。否则,这将确定对数据执行的平均类型:

'binary'

仅报告 pos_label 指定的类的结果。这仅适用于目标 (y_{true,pred}) 是二进制的。

'micro'

通过计算总的真阳性、假阴性和假阳性来全局计算指标。

'macro'

计算每个标签的指标,并找到它们的未加权平均值。这没有考虑标签不平衡。

'weighted'

计算每个标签的指标,并通过支持度(每个标签的真实实例数)找到它们的平均加权值。这会改变 ‘macro’ 以解决标签不平衡问题;它可能导致 F-score 不在精确率和召回率之间。

'samples'

计算每个实例的指标,并找到它们的平均值(仅对不同于 accuracy_score 的多标签分类有意义)。

sample_weight形状类似数组 (n_samples,),默认=None

样本权重。

zero_division“warn”,0或1,默认=”warn”

设置当有零除法时返回的值,即当所有预测和标签都是负数时。如果设置为“warn”,这将作为 0,但也会引发警告。

返回

f1_score浮点数或浮点数数组,形状 = [n_unique_labels]

二分类中正类的 F1 分数或多类任务中每个类的 F1 分数的加权平均值。

注意

true positive + false positive == 0 时,精度未定义。当 true positive + false negative == 0 时,召回未定义。在这种情况下,默认情况下,度量将设置为 0,f-score 和 UndefinedMetricWarning 将被提高。可以使用 zero_division 修改此行为。

参考

1

Wikipedia entry for the F1-score

例子

>>> from sklearn.metrics import f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')
0.26...
>>> f1_score(y_true, y_pred, average='micro')
0.33...
>>> f1_score(y_true, y_pred, average='weighted')
0.26...
>>> f1_score(y_true, y_pred, average=None)
array([0.8, 0. , 0. ])
>>> y_true = [0, 0, 0, 0, 0, 0]
>>> y_pred = [0, 0, 0, 0, 0, 0]
>>> f1_score(y_true, y_pred, zero_division=1)
1.0...
>>> # multilabel classification
>>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]]
>>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]]
>>> f1_score(y_true, y_pred, average=None)
array([0.66666667, 1.        , 0.66666667])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.metrics.f1_score。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。