class_likelihood_ratios#
- sklearn.metrics.class_likelihood_ratios(y_true, y_pred, *, метки=None, sample_weight=None, raise_warning='устаревший', 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, тем ниже вероятность того, что данная выборка является ложным отрицанием. ALR-значение 1.0 означает, что тест бесполезен, поскольку шансы наличия условия не изменились после теста. ЗначениеLR-больше 1.0 делает классификатор недействительным, так как это указывает на увеличение шансов принадлежности образца к положительному классу после классификации как отрицательного. Это происходит, когда классификатор систематически предсказывает противоположное истинной метке.Типичное применение в медицине — определить положительный/отрицательный класс как наличие/отсутствие заболевания соответственно; классификатором является диагностический тест; априорная вероятность наличия заболевания у индивида может быть распространенностью этого заболевания (доля определенной популяции, страдающей от данного медицинского состояния); апостериорные вероятности будут вероятностью того, что состояние действительно присутствует при положительном результате теста.
Подробнее в Руководство пользователя.
- Параметры:
- y_true1d array-like, или массив индикаторов меток / разреженная матрица
Истинные (правильные) целевые значения. Разреженная матрица поддерживается только когда цели имеют многометочный тип.
- y_pred1d array-like, или массив индикаторов меток / разреженная матрица
Оцененные цели, возвращаемые классификатором. Разреженная матрица поддерживается только когда цели имеют многометочный тип.
- меткиarray-like, default=None
Список меток для индексации матрицы. Может использоваться для выбора положительных и отрицательных классов с заданным порядком
labels=[negative_class, positive_class]. ЕслиNoneзадано, те, которые появляются хотя бы раз вy_trueилиy_predиспользуются в отсортированном порядке.- sample_weightarray-like формы (n_samples,), по умолчанию=None
Веса выборок.
- raise_warningbool, по умолчанию=True
Выводится ли специфичное для случая предупреждение при делении на ноль.
Устарело с версии 1.7:
raise_warningбыл устаревшим в версии 1.7 и будет удалён в 1.9, когдаUndefinedMetricWarningвсегда будет вызывать исключение в случае деления на ноль.- 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)кортеж из float
Кортеж из двух чисел с плавающей запятой, первое содержит положительное отношение правдоподобия (LR+) и второе — отрицательное отношение правдоподобия (LR-).
- Предупреждает:
- Вызывает
UndefinedMetricWarningкогдаy_trueи y_predприводит к следующим условиям:Количество ложных срабатываний равно 0, и
raise_warningустановлено вTrue(по умолчанию): положительное отношение правдоподобия не определено.Количество истинно отрицательных равно 0 и
raise_warningустановлено вTrue(по умолчанию): отрицательное отношение правдоподобия не определено.Сумма истинно положительных и ложно отрицательных результатов равна 0 (в выборке отсутствуют образцы положительного класса).
y_true): оба отношения правдоподобия не определены.
Для первых двух случаев неопределенная метрика может быть определена путем установки
replace_undefined_byпараметр.
- Вызывает
Ссылки
Примеры
>>> 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)