类似度比#
- 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_warning布尔值,默认为 True
- 当出现零除法时是否引发特定情况的警告消息。即使没有引发错误,函数在这种情况下也会返回 nan。 
 
- 返回值:
- (positive_likelihood_ratio, negative_likelihood_ratio)元组
- 包含两个浮点数的元组,第一个是阳性似然比,第二个是阴性似然比。 
 
- 警告:
- 当 false positive == 0时,阳性似然比未定义。
- 当 true negative == 0时,阴性似然比未定义。
- 当 true positive + false negative == 0时,两个比率均未定义。
- 在这种情况下,如果 raise_warning=True,则会引发 UserWarning。
 
- 当 
 - 参考文献 [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)) 
 
    