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.
- Когда
Ссылки
Примеры
>>> 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