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
Примеры галереи#
Калибровка вероятностей для классификации на 3 класса