class_likelihood_ratios#
- sklearn.metrics.class_likelihood_ratios(y_true, y_pred, *, labels=None, sample_weight=None, raise_warning='deprecated', replace_undefined_by=nan)[source]#
计算二元分类的正负似然比。
阳性似然比为
LR+ = sensitivity / (1 - specificity),其中敏感度或召回率是tp / (tp + fn),特异性是tn / (tn + fp)。阴性似然比为LR- = (1 - sensitivity) / specificity。这里tp是真阳性(true positives)的数量,fp是假阳性(false positives)的数量,tn是真阴性(true negatives)的数量,fn是假阴性(false negatives)的数量。两种类别似然比都可用于根据检验前概率获得检验后概率。LR+的范围是 1.0 到无穷大。LR+为 1.0 表示预测阳性类别的概率对于属于任一类别的样本来说是相同的;因此,该测试是无用的。LR+越大,与检验前概率相比,阳性预测是真阳性的可能性就越大。低于 1.0 的LR+值是无效的,因为它表明样本是真阳性的几率相对于检验前几率有所下降。LR-的范围是 0.0 到 1.0。它越接近 0.0,给定样本是假阴性的概率就越低。LR-为 1.0 表示测试无用,因为测试后拥有该条件的几率没有改变。大于 1.0 的LR-值会使分类器无效,因为它表明样本在被分类为阴性后属于阳性类别的几率增加了。当分类器系统地预测与真实标签相反的情况时,就会出现这种情况。在医学中的典型应用是将阳性/阴性类别分别识别为疾病的存在/不存在;分类器是一种诊断测试;个体患有该疾病的检验前概率可以是该疾病的患病率(在特定人群中发现受某种疾病影响的比例);检验后概率将是在测试结果呈阳性的情况下,该疾病确实存在的概率。
在 用户指南 中阅读更多内容。
- 参数:
- y_true1d array-like, or label indicator array / sparse matrix
真实(正确)目标值。稀疏矩阵仅在目标为 多标签 类型时受支持。
- y_pred1d array-like, or label indicator array / sparse matrix
分类器返回的估计目标。稀疏矩阵仅在目标为 多标签 类型时受支持。
- labelsarray-like, default=None
用于索引矩阵的标签列表。这可用于使用排序
labels=[negative_class, positive_class]来选择阳性类别和阴性类别。如果给定None,则使用至少一次出现在y_true或y_pred中的标签,并按排序顺序排列。- sample_weightshape 为 (n_samples,) 的 array-like, default=None
样本权重。
- raise_warningbool, default=True
当发生除以零时是否引发特定情况的警告消息。
自版本 1.7 弃用:
raise_warning已在版本 1.7 中弃用,并将在 1.9 中移除,届时在发生除以零的情况下将始终引发UndefinedMetricWarning。- replace_undefined_bynp.nan, 1.0, or dict, default=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)tuple of float
包含两个浮点数的元组,第一个包含阳性似然比 (LR+),第二个包含阴性似然比 (LR-)。
- 警告:
- 当
y_true和y_pred导致以下情况时引发UndefinedMetricWarning y_pred导致以下情况:假阳性数量为 0 且
raise_warning设置为True(默认):阳性似然比未定义。真阴性数量为 0 且
raise_warning设置为True(默认):阴性似然比未定义。真阳性和假阴性之和为 0(
y_true中不存在阳性类别的样本):两个似然比均未定义。
对于前两种情况,可以通过设置
replace_undefined_by参数来定义未定义的指标。
- 当
References
[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)