Spec-Zone.ru › scikit-learn

class_likelihood_ratios

sklearn.metrics.class_likelihood_ratios(y_true, y_pred, *, labels=None, sample_weight=None, replace_undefined_by=nan)[исходный код]

Вычисляет положительное и отрицательное отношения правдоподобия для бинарной классификации.

Положительное отношение правдоподобия — это LR+ = sensitivity / (1 - specificity), где чувствительность, или полнота, равна отношению tp / (tp + fn), а специфичность — tn / (tn + fp). Отрицательное отношение правдоподобия — это LR- = (1 - sensitivity) / specificity. Здесь tp — число истинно положительных результатов, fp — число ложноположительных результатов, tn — число истинно отрицательных результатов, а fn — число ложноотрицательных результатов. Оба отношения правдоподобия классов можно использовать для вычисления апостериорных вероятностей при заданной априорной вероятности.

LR+ принимает значения от 1.0 до бесконечности. Значение LR+, равное 1.0, означает, что вероятность предсказать положительный класс одинакова для образцов, принадлежащих к любому из классов; следовательно, тест бесполезен. Чем больше LR+, тем вероятнее, что положительное предсказание окажется истинно положительным по сравнению с априорной вероятностью. Значение LR+ меньше 1.0 недопустимо, поскольку оно означало бы, что шансы на то, что образец является истинно положительным, уменьшаются относительно априорных шансов.

LR- принимает значения от 0.0 до 1.0. Чем ближе оно к 0.0, тем ниже вероятность того, что данный образец окажется ложноотрицательным. Значение LR-, равное 1.0, означает, что тест бесполезен, поскольку шансы наличия заболевания после теста не изменились. Значение LR- больше 1.0 делает классификатор непригодным, поскольку указывает на увеличение шансов принадлежности образца к положительному классу после его классификации как отрицательного. Это происходит, когда классификатор систематически предсказывает метку, противоположную истинной.

Типичное применение в медицине — определение положительного/отрицательного класса по наличию/отсутствию заболевания соответственно; классификатор при этом является диагностическим тестом; априорной вероятностью наличия заболевания у человека может быть распространённость этого заболевания (доля представителей определённой популяции, страдающих данным заболеванием); апостериорными вероятностями будет вероятность того, что заболевание действительно присутствует, при положительном результате теста.

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

Параметры:
y_trueмассивоподобная структура размерности 1 или массив индикаторов меток / разреженная матрица

Истинные (правильные) целевые значения. Разреженная матрица поддерживается только в том случае, если цели относятся к типу многометочных.

y_predмассивоподобная структура размерности 1 или массив индикаторов меток / разреженная матрица

Оценённые целевые значения, возвращённые классификатором. Разреженная матрица поддерживается только в том случае, если цели относятся к типу многометочных.

labelsмассивоподобная структура, по умолчанию None

Список меток для индексирования матрицы. Его можно использовать, чтобы выбрать положительный и отрицательный классы в порядке labels=[negative_class, positive_class]. Если None не задан, используются метки, встречающиеся хотя бы один раз в y_true или y_pred, в отсортированном порядке.

sample_weightмассивоподобная структура формы (n_samples,), по умолчанию None

Веса образцов.

replace_undefined_bynp.nan, 1.0 или dict, по умолчанию np.nan

Задаёт возвращаемые значения LR+ и LR- при делении на ноль. Возможны следующие значения:

  • np.nan для возврата np.nan для обоих LR+ и LR-
  • 1.0 для возврата наихудших возможных оценок: {"LR+": 1.0, "LR-": 1.0}
  • словарь формата {"LR+": value_1, "LR-": value_2}, значения которого могут быть неотрицательными числами с плавающей точкой, np.inf или np.nan в диапазоне отношений правдоподобия. Например, {"LR+": 1.0, "LR-": 1.0} можно использовать для возврата наихудших оценок, указывающих на бесполезность модели, а {"LR+": np.inf, "LR-": 0.0} — для возврата наилучших оценок, указывающих на полезность модели.

Если происходит деление на ноль, заданным значением заменяется только соответствующая метрика; другая метрика вычисляется как обычно.

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

Возвращает:
(positive_likelihood_ratio, negative_likelihood_ratio)кортеж чисел с плавающей точкой

Кортеж из двух чисел с плавающей точкой: первое содержит положительное отношение правдоподобия (LR+), второе — отрицательное отношение правдоподобия (LR-).

Предупреждения:
Вызывает UndefinedMetricWarning, когда y_true и
y_pred приводят к следующим условиям:
  • Число ложноположительных результатов равно 0: положительное отношение правдоподобия не определено.
  • Число истинно отрицательных результатов равно 0: отрицательное отношение правдоподобия не определено.
  • Сумма числа истинно положительных и ложноотрицательных результатов равна 0 (в y_true нет образцов положительного класса): оба отношения правдоподобия не определены.

В первых двух случаях неопределённую метрику можно задать с помощью параметра replace_undefined_by.

Ссылки

[1]

Статья в Википедии об отношениях правдоподобия в диагностическом тестировании.

Примеры

>>> import numpy as np
>>> from sklearn.metrics import class_likelihood_ratios
>>> class_likelihood_ratios([0, 1, 0, 1, 0], [1, 1, 0, 0, 0])
(1.5, 0.75)
>>> y_true = np.array(["non-cat", "cat", "non-cat", "cat", "non-cat"])
>>> y_pred = np.array(["cat", "cat", "non-cat", "non-cat", "non-cat"])
>>> class_likelihood_ratios(y_true, y_pred)
(1.33, 0.66)
>>> y_true = np.array(["non-zebra", "zebra", "non-zebra", "zebra", "non-zebra"])
>>> y_pred = np.array(["zebra", "zebra", "non-zebra", "non-zebra", "non-zebra"])
>>> class_likelihood_ratios(y_true, y_pred)
(1.5, 0.75)

Чтобы избежать неоднозначности, используйте обозначения labels=[negative_class, positive_class]

>>> y_true = np.array(["non-cat", "cat", "non-cat", "cat", "non-cat"])
>>> y_pred = np.array(["cat", "cat", "non-cat", "non-cat", "non-cat"])
>>> class_likelihood_ratios(y_true, y_pred, labels=["non-cat", "cat"])
(1.5, 0.75)

Примеры в галерее

Отношения правдоподобия классов для оценки качества классификации

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.class_likelihood_ratios.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API