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


Python sklearn precision_recall_fscore_support用法及代码示例


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

用法:

sklearn.metrics.precision_recall_fscore_support(y_true, y_pred, *, beta=1.0, labels=None, pos_label=1, average=None, warn_for=('precision', 'recall', 'f-score'), sample_weight=None, zero_division='warn')

计算每个类的精度、召回率、F-measure 和支持。

精度是比率tp / (tp + fp),其中tp 是真阳性数,fp 是假阳性数。精度直观地是分类器不将负样本标记为正样本的能力。

召回率是 tp / (tp + fn) 的比率,其中 tp 是真阳性数,fn 是假阴性数。召回率直观地是分类器找到所有正样本的能力。

F-beta 分数可以解释为准确率和召回率的加权调和平均值,其中 F-beta 分数在 1 处达到其最佳值,在 0 处达到最差分数。

F-beta 分数权重的召回率比准确率高出 beta 的系数。 beta == 1.0 表示召回率和准确率同样重要。

支持是 y_true 中每个类的出现次数。

如果 pos_label is None 且处于二元分类中,则此函数返回平均精度、召回率,如果 average'micro''macro''weighted''samples' 之一,则返回 F-measure 。

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

参数

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

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

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

分类器返回的估计目标。

beta浮点数,默认=1.0

F-score 中召回率与精度的对比。

labels类似数组,默认=无

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

pos_labelstr 或 int,默认 = 1

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

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

如果 None ,则返回每个类的分数。否则,这将确定对数据执行的平均类型:

'binary'

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

'micro'

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

'macro'

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

'weighted'

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

'samples'

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

warn_for元组或集合,供内部使用

这决定了在此函数仅用于返回其指标之一的情况下将发出哪些警告。

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

样本权重。

zero_division“warn”,0或1,默认=”warn”
设置零除法时要返回的值:
  • 回忆:当没有正面标签时
  • 精度:当没有正面预测时
  • f-score:两者都有

如果设置为“warn”,这将作为 0,但也会引发警告。

返回

precision浮点数(如果平均值不是无)或浮点数数组,形状 = [n_unique_labels]
recall浮点数(如果平均值不是无)或浮点数数组,形状 = [n_unique_labels]
fbeta_score浮点数(如果平均值不是无)或浮点数数组,形状 = [n_unique_labels]
support无(如果平均值不是无)或 int 数组,形状 = [n_unique_labels]

y_true 中每个标签的出现次数。

注意

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

参考

1

Wikipedia entry for the Precision and recall

2

Wikipedia entry for the F1-score

3

Multi-labeled 知识发现和数据挖掘分类进展的判别方法 (2004),第 22-30 页,作者 Shantanu Godbole、Sunita Sarawagi.

例子

>>> import numpy as np
>>> from sklearn.metrics import precision_recall_fscore_support
>>> y_true = np.array(['cat', 'dog', 'pig', 'cat', 'dog', 'pig'])
>>> y_pred = np.array(['cat', 'pig', 'dog', 'cat', 'cat', 'dog'])
>>> precision_recall_fscore_support(y_true, y_pred, average='macro')
(0.22..., 0.33..., 0.26..., None)
>>> precision_recall_fscore_support(y_true, y_pred, average='micro')
(0.33..., 0.33..., 0.33..., None)
>>> precision_recall_fscore_support(y_true, y_pred, average='weighted')
(0.22..., 0.33..., 0.26..., None)

可以计算per-label 精度、召回率、F1 分数和支持,而不是平均:

>>> precision_recall_fscore_support(y_true, y_pred, average=None,
... labels=['pig', 'dog', 'cat'])
(array([0.        , 0.        , 0.66...]),
 array([0., 0., 1.]), array([0. , 0. , 0.8]),
 array([2, 2, 2]))

相关用法


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