Brier 评分损失#

sklearn.metrics.brier_score_loss(y_true, y_proba=None, *, sample_weight=None, pos_label=None, y_prob='deprecated')[source]#

计算 Brier 评分损失。

Brier评分损失越小越好,因此命名为“损失”。Brier评分衡量的是预测概率与实际结果之间的均方差。Brier评分的值始终介于零和一之间,因为这是预测概率(必须介于零和一之间)与实际结果(只能取0和1的值)之间可能的最大差异。它可以分解为精细化损失和校准损失之和。

Brier评分适用于可以构建为真或假的二元和分类结果,但不适用于可以取三个或更多值的序数变量(这是因为Brier评分假设所有可能的结果彼此之间“距离”相等)。哪个标签被认为是正标签由参数pos_label控制,除非y_true全为0或全为-1,否则默认为较大的标签,在这种情况下pos_label默认为1。

用户指南中了解更多信息。

参数:
y_true形状为 (n_samples,) 的类数组

真实目标。

y_proba形状为 (n_samples,) 的类数组

正类的概率。

sample_weight形状为 (n_samples,) 的类数组,默认为None

样本权重。

pos_label整数、浮点数、布尔值或字符串,默认为None

正类的标签。pos_label将按以下方式推断:

  • 如果y_true在{-1, 1}或{0, 1}中,pos_label默认为1;

  • 否则,如果y_true包含字符串,则会引发错误,并且应明确指定pos_label

  • 否则,pos_label默认为较大的标签,即np.unique(y_true)[-1]

y_prob形状为 (n_samples,) 的类数组

正类的概率。

自版本 1.5 起已弃用:y_prob已弃用,并将从 1.7 中移除。请改用y_proba

返回:
score浮点数

Brier评分损失。

参考文献

示例

>>> import numpy as np
>>> from sklearn.metrics import brier_score_loss
>>> y_true = np.array([0, 1, 1, 0])
>>> y_true_categorical = np.array(["spam", "ham", "ham", "spam"])
>>> y_prob = np.array([0.1, 0.9, 0.8, 0.3])
>>> brier_score_loss(y_true, y_prob)
np.float64(0.037...)
>>> brier_score_loss(y_true, 1-y_prob, pos_label=0)
np.float64(0.037...)
>>> brier_score_loss(y_true_categorical, y_prob, pos_label="ham")
np.float64(0.037...)
>>> brier_score_loss(y_true, np.array(y_prob) > 0.5)
np.float64(0.0)