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-测度和支持度。

精确度就是 tp / (tp + fp) 哪里 tp 是真阳性的数量, fp 假阳性的数量。准确性直观地是分类器不将阴性样本标记为阳性的能力。

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

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

F-beta评分对召回率的权重大于对精确率的权重, beta . beta == 1.0 意味着召回率和准确性同等重要。

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

期限外的支持:通过治疗来实现“二元”目标 multiclassmultilabel 数据作为二进制问题的集合,每个标签一个问题。为 binary 案例、设置 average='binary' 将返回指标 pos_label .如果 average'binary' , pos_label 被忽略,并计算两个类别的指标,然后求平均值或两者返回(当 average=None ).同样对于 multiclassmultilabel 所有人的目标、指标 labels 根据 average 参数.使用 labels 指定要计算指标的标签集。

阅读更多的 User Guide .

参数:
y_true1D类数组或标签指示符数组/稀疏矩阵

地面真相(正确)目标值。

y_pred1D类数组或标签指示符数组/稀疏矩阵

分类器返回的估计目标。

betafloat,默认=1.0

F评分中的召回强度与准确性。

labels类数组,默认=无

何时包含的标签集 average != 'binary' ,以及它们的顺序,如果 average is None .可以排除数据中存在的标签,例如在多类分类中排除“负类”。可以包括数据中未出现的标签,并将“分配”0个样本。对于多标签目标,标签是列索引。默认情况下,所有标签 y_truey_pred 按排序顺序使用。

在 0.17 版本发生变更: 参数 labels 改进了多类问题。

pos_labelint、float、bool或char,默认=1

如果需要报告的班级 average='binary' 并且数据是二进制的,否则该参数将被忽略。对于多类别或多标签目标,设置 labels=[pos_label]average != 'binary' 仅报告一个标签的指标。

average“微观”、“宏观”、“样本”、“加权”、“二进制”}或无, 默认='二元'

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

'binary' :

仅报告由指定的类的结果 pos_label .这仅适用于以下情况 (y_{true,pred} )是二进制的。

'micro' :

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

'macro' :

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

'weighted' :

计算每个标签的指标,并找到按支持度加权的平均值(每个标签的真实实例数)。这会改变“宏”以解决标签失衡问题;它可能会导致F评分不在精确度和召回率之间。

'samples' :

计算每个实例的指标,并找到其平均值(仅对多标签分类有意义,因为这与多标签分类不同 accuracy_score ).

warn_for列表、tuple或set,供内部使用

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

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

样本重量。

zero_division{“warn”,0.0,1.0,NP.nan},默认=“warn”

Sets the value to return when there is a zero division:

  • 回忆:当没有正面标签时

  • 精确度:当没有积极预测时

  • f分:两者

注:

  • 如果设置为“警告”,则其行为类似于0,但也会引发警告。

  • 如果设置为 np.nan ,这些值将被排除在平均值之外。

Added in version 1.3: np.nan 添加了选项。

返回:
precisionfloat(如果平均值不是无)或float数组,shape = [n_unique_labels]

精确度得分。

recallfloat(如果平均值不是无)或float数组,shape = [n_unique_labels]

回忆分数。

fbeta_scorefloat(如果平均值不是无)或float数组,shape = [n_unique_labels]

F-Beta评分。

support无(如果平均值不是无)或int数组,shape = [n_unique_labels]

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

注意到

true positive + false positive == 0 ,精度未定义。当 true positive + false negative == 0 ,召回未定义。当 true positive + false negative + false positive == 0 ,f分数未定义。在这种情况下,默认情况下,指标将设置为0,并且 UndefinedMetricWarning 将被提出。此行为可以通过以下方式修改 zero_division .

引用

[1]

Wikipedia entry for the Precision and recall <https://en.wikipedia.org/wiki/Precision_and_recall> _.

[2]

Wikipedia entry for the F1-score <https://en.wikipedia.org/wiki/F1_score> _.

[3]

Discriminative Methods for Multi-labeled Classification Advances in Knowledge Discovery and Data Mining (2004), pp. 22-30 by Shantanu Godbole, Sunita Sarawagi <http://www.godbole.net/shantanu/pubs/multilabelsvm-pakdd04.pdf> _.

示例

>>> 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)

可以计算每个标签的精确度、召回率、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]))