Spec-Zone.ru › scikit-learn

class_likelihood_ratios

sklearn.metrics.class_likelihood_ratios(y_true, y_pred, *, labels=None, sample_weight=None, raise_warning=True)[source]

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

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

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

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

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

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

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

Истинные (правильные) значения целевых переменных.

y_predОдномерный массив-подобный объект или индикаторный массив/разреженная матрица меток

Оценённые целевые переменные, возвращённые классификатором.

labelsмассив-подобный объект, по умолчанию = None

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

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

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

raise_warningbool, по умолчанию = True

Указывает, выводить ли предупреждение, специфичное для случая, при делении на ноль. Даже если ошибка не генерируется, функция вернёт nan в таких случаях.

Возвращает:
(positive_likelihood_ratio, negative_likelihood_ratio)кортеж

Кортеж из двух чисел с плавающей запятой, первый — положительное отношение правдоподобия, второй — отрицательное отношение правдоподобия.

Предупреждения:
Когда false positive == 0, положительное отношение правдоподобия не определено.
Когда true negative == 0, отрицательное отношение правдоподобия не определено.
Когда true positive + false negative == 0 оба отношения не определены.
В таких случаях UserWarning будет поднято, если raise_warning=True.

Ссылки

[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])
(np.float64(1.5), np.float64(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)
(np.float64(1.33...), np.float64(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)
(np.float64(1.5), np.float64(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"])
(np.float64(1.5), np.float64(0.75))

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

Правдоподобия классов для измерения производительности классификации

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

Spec-Zone.ru

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