通过sklearn.metrics import precision_score测试precision时(二分类问题),怎么设置正类是哪一个?

sklearn在sklearn.metrics import precision_score给我们提供了接口去测试数据集上的precision,我们知道

  1. precision=TP/(TP+TN)

那么如何让sklearn知道我们的数据集中哪一个是正类?
首先先看一下sklearn官网关于precision_score函数的定义,其中重点关注pos_label和average这两个属性,

sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1, average=‘binary’, sample_weight=None, zero_division=‘warn’)

通过查看sklearn中对于precision_score中pro_score这个属性的说明,下方截图的第一句,意思是如果average这个属性='binary’并且数据为二分类,那么就报告pos_label所标注的类的结果。 (而pos_label默认标注的为1),

在这里插入图片描述
意思说如果数据为二分类,且另一个属性average=“binary”,那么precision计算的就是pos_label所标注的这个类的结果,即我们称之为的"正类"的结果。

那么average又是什么呢?
解释如下,当average这个属性是binary时,(默认就是binary)解释是:仅会报告出由pos_label所标注类的结果。这个仅当y_{true,pred}为二分类时才生效。
在这里插入图片描述
所以意思
就是仅当二分类时,pos_label为哪一个数字,对应数据集中的标签就为正类,如果不填pos_label,则默认数据集中标签为1的是正类,并且如果不填average默认就是binary二分类的情况。

precision_score(y_true, y_pred, pos_label=1, average=‘binary’) 意思就是让数据集中标签为1的类为正类。


版权声明:本文为weixin_43356308原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。