代码示例:

 

sklearn.metrics.auc函数的输入是FPR和TPR的值,即ROC曲线中的真阳性率(true positive rate)和假阳性率(false positive rate)。得到的输出结果是一个float格式的数值,代指ROC曲线下的面积(AUC的值)。

python所给的代码示例中用到了metrics.roc_curve函数,这个函数主要是用来计算ROC曲线面积的;

在这里的输入参数有三个:

第一个参数是一个二进制数组y,代表“真”或“假”,默认为0或者1的二进制数组,如果不是以0或者1 表明,则必须在第三个参数pos_label处表明;

第二个参数是一个数组,代表目标得分,可以是积极类的概率估计,信心值,或者是决定的非阈值度量;

第三个参数pos_label代表二进制数组y中代表“真”的二进制编码,其他的编码都会被认为是

在示例中,0.1就是指第一个数预测为阳性的概率为0.1,很显然,y 和 pred应该有相同多的元素,都等于样本数。pos_label=2 是指在y中标签为2的是标准阳性标签,其余值是阴性。

所以在标准值y中,阳性有2个,后两个;阴性有2个,前两个。

接下来选取一个阈值计算TPR/FPR,阈值的选取规则是在scores值中从大到小的以此选取,于是第一个选取的阈值是0.8

scores中大于阈值的就是预测为阳性,小于的预测为阴性。所以预测的值设为y=(0,0,0,1),0代表预测为阴性,1代表预测为阳性(实际应该是0,0,1,1)。可以看出,真阴性(TN=2)都被预测为阴性(FP=0),真阳性(TP=1)有一个预测为假阴性(FN=1)了。

FPR = FP / (FP+TN) = 0 /( 0 + 2) = 0

TPR = TP/ (TP + FN) = 1 / (1 + 1) = 0.5

thresholds = 0.8

接下来依次以0.4,0.35,0.1作为阈值预测,分别得到三组(FPR,TPR)的值。我们得到的fpr和tpr(即metrics.auc的输出)分别是一个数组。

这里计算的结果是:

fpr[0,0.5,0.5,1]

tpr[0.5 0.5 1 1]

将fpr和tpr输入sklearn.auc函数,即求取(0,0.5)、(0.5,0.5)、(0.5,1)、(1,1)折线的定积分面积,AUC面积很直观是0.75,即auc函数的输出值。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐