class_likelihood_ratios#
- sklearn.metrics.class_likelihood_ratios(y_true, y_pred, *, labels=None, sample_weight=None, raise_warning=True)[源代码]#
计算二元分类正可能比和负可能比。
正似然比为
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使分类器无效,因为它指示样本在被分类为阴性之后属于阳性类的几率增加。这是当分类器系统地预测与真实标签相反的情况。医学中的典型应用是分别识别疾病存在/不存在的阳性/阴性类别;分类器是诊断测试;个体患有疾病的预测试概率可以是此类疾病的患病率(发现受疾病影响的特定人群的比例);测试后概率是在阳性测试结果的情况下,该疾病确实存在的概率。
阅读更多的 User Guide .
- 参数:
- y_true1D类数组或标签指示符数组/稀疏矩阵
地面真相(正确)目标值。
- y_pred1D类数组或标签指示符数组/稀疏矩阵
分类器返回的估计目标。
- labels类数组,默认=无
用于索引矩阵的标签列表。这可以用于根据顺序选择正类和负类
labels=[negative_class, positive_class]
.如果None
给出的是那些至少出现一次的y_true
或y_pred
按排序顺序使用。- sample_weight形状类似数组(n_samples,),默认=无
样本重量。
- raise_warning布尔,默认=True
当存在零划分时是否会引发特定情况的警告消息。即使没有引发错误,该函数在这种情况下也会返回nan。
- 返回:
- (positive_likelihood_ratio, negative_likelihood_ratio)元组
两个浮点数的元组,第一个包含正似然比,第二个包含负似然比。
- 警告:
- 当
false positive == 0
,正似然比未定义。 - 当
true negative == 0
,负似然比未定义。 - 当
true positive + false negative == 0
这两个比率都是不确定的。 - 在这种情况下,
UserWarning
如果raise_warning=True,将引发。
- 当
引用
[1]Wikipedia entry for the Likelihood ratios in diagnostic testing <https://en.wikipedia.org/wiki/Likelihood_ratios_in_diagnostic_testing>
_.示例
>>> 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))