brier_score_loss#

sklearn.metrics.brier_score_loss(y_true, y_proba, *, sample_weight=None, pos_label=None, метки=None, scale_by_half='auto')[источник]#

Вычислить потерю по шкале Брайера.

Чем меньше потеря по шкале Брайера, тем лучше, отсюда название с "loss". Шкала Брайера измеряет среднюю квадратичную разницу между предсказанной вероятностью и фактическим исходом. Шкала Брайера является строго правильным правилом оценки.

Подробнее в Руководство пользователя.

Параметры:
y_truearray-like формы (n_samples,)

Истинные целевые переменные.

y_probaмассивоподобный формы (n_samples,) или (n_samples, n_classes)

Предсказанные вероятности. Если y_proba.shape = (n_samples,) предполагается, что предоставленные вероятности относятся к положительному классу. Если y_proba.shape = (n_samples, n_classes) столбцы в y_proba предполагается, что соответствуют меткам в алфавитном порядке, как это сделано в LabelBinarizer.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса выборок.

pos_labelint, float, bool или str, по умолчанию=None

Метка положительного класса, когда y_proba.shape = (n_samples,). Если не указано, pos_label будет выведен следующим образом:

  • if y_true в {-1, 1} или {0, 1}, pos_label по умолчанию 1;

  • иначе если y_true содержит строку, будет вызвана ошибка и pos_label должен быть явно указан;

  • в противном случае, pos_label по умолчанию принимает большее значение метки, т.е. np.unique(y_true)[-1].

меткиarray-like формы (n_classes,), по умолчанию=None

Метки классов, когда y_proba.shape = (n_samples, n_classes). Если не предоставлено, метки будут выведены из y_true.

Добавлено в версии 1.7.

scale_by_halfbool или "auto", по умолчанию="auto"

Когда True, масштабирует оценку Брайера на 1/2, чтобы она лежала в диапазоне [0, 1] вместо диапазона [0, 2]. Опция по умолчанию "auto" реализует перемасштабирование в [0, 1] только для бинарной классификации (как принято), но сохраняет исходный диапазон [0, 2] для многоклассовой классификации.

Добавлено в версии 1.7.

Возвращает:
scorefloat

Потеря по шкале Брайера.

Примечания

Для \(N\) наблюдений, помеченных от \(C\) возможных классов, оценка Брайера определяется как:

\[\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C}(y_{ic} - \hat{p}_{ic})^{2}\]

где \(y_{ic}\) равен 1, если наблюдение i принадлежит классу c, иначе 0 и \(\hat{p}_{ic}\) это прогнозируемая вероятность для наблюдения i принадлежать классу c. Оценка Брайера затем находится в диапазоне между \([0, 2]\).

В задачах бинарной классификации оценка Брайера обычно делится на два и затем находится в диапазоне между \([0, 1]\). Это может быть альтернативно записано как:

\[\frac{1}{N}\sum_{i=1}^{N}(y_{i} - \hat{p}_{i})^{2}\]

где \(y_{i}\) является бинарной целевой переменной и \(\hat{p}_{i}\) является предсказанной вероятностью положительного класса.

Ссылки

Примеры

>>> 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)
0.0375
>>> brier_score_loss(y_true, 1-y_prob, pos_label=0)
0.0375
>>> brier_score_loss(y_true_categorical, y_prob, pos_label="ham")
0.0375
>>> brier_score_loss(y_true, np.array(y_prob) > 0.5)
0.0
>>> brier_score_loss(y_true, y_prob, scale_by_half=False)
0.075
>>> brier_score_loss(
...    ["eggs", "ham", "spam"],
...    [[0.8, 0.1, 0.1], [0.2, 0.7, 0.1], [0.2, 0.2, 0.6]],
...    labels=["eggs", "ham", "spam"]
... )
0.146