mars.learn.metrics.fbeta_score#

mars.learn.metrics.fbeta_score(y_true, y_pred, *, beta, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[来源]#

计算F-beta得分

F-beta 分数是精确度和召回率的加权调和平均数,最佳值为1,最差值为0。

参数 beta 确定组合评分中召回率的权重。 beta < 1 更加重视精确率,而 beta > 1 更倾向于召回率 (beta -> 0 仅考虑精确率, beta -> +inf 仅考虑召回率)。

用户指南中阅读更多内容。

Parameters
  • y_true (一维数组-like,或标签指示数组 / 稀疏矩阵) – 真实的(正确的)目标值。

  • y_pred (一维数组或标签指示数组 / 稀疏矩阵) – 分类器返回的估计目标。

  • beta (float) – 确定综合评分中召回率的权重。

  • labels (list, optional) – 当 average != 'binary' 时要包含的标签集,以及如果 average is None 时的顺序。在数据中存在的标签可以被排除,例如计算多类平均值时忽略大多数负类,而在数据中不存在的标签将导致宏平均中的0个组件。对于多标签目标,标签是列索引。默认情况下,y_truey_pred 中的所有标签按顺序使用。

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

  • average (string, [None, 'binary' (default), 'micro', 'macro', 'samples', 'weighted']) –

    此参数在多类/多标签目标中是必需的。 如果 None,则返回每个类别的分数。否则,这确定在数据上执行的平均类型:

    'binary':

    仅报告由 pos_label指定的类别的结果。 这仅适用于目标(y_{true,pred})为二元时。

    'micro':

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

    'macro':

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

    'weighted':

    为每个标签计算指标,并根据支持度(每个标签的真实实例数量)找到它们的加权平均。这 改变了‘macro’,以考虑标签不平衡;这可能导致F分数不在精确度和召回率之间。

    'samples':

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

  • sample_weight (类数组,形状 (n_samples,), 默认值=None) – 样本权重。

  • zero_division ("warn", 0 or 1, default="warn") – 设置除以零时返回的值,即当所有预测和标签都是负数时。如果设置为“warn”,则表现为0,但也会发出警告。

Returns

fbeta_score – 二分类中正类的F-beta分数,或多类任务中每个类别的F-beta分数的加权平均。

Return type

float(如果平均值不是 None)或 float 的数组,形状 = [n_unique_labels]

参考文献

1

R. Baeza-Yates 和 B. Ribeiro-Neto (2011). 现代信息检索. Addison Wesley, pp. 327-328.

2

F1分数的维基百科条目

示例

>>> from mars.learn.metrics import fbeta_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> fbeta_score(y_true, y_pred, average='macro', beta=0.5)
0.23...
>>> fbeta_score(y_true, y_pred, average='micro', beta=0.5)
0.33...
>>> fbeta_score(y_true, y_pred, average='weighted', beta=0.5)
0.23...
>>> fbeta_score(y_true, y_pred, average=None, beta=0.5)
array([0.71..., 0.        , 0.        ])

备注

true positive + false positive == 0 或者 true positive + false negative == 0,f-score 返回 0 并触发 UndefinedMetricWarning。这种行为可以通过 zero_division 修改。