官方文档链接:(以recall_score为例子)https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html


precision_score,recall_score,f1_score都需要一个average的参数。

这个参数对于多类/多标签目标是必需的。如果没有(None),则返回每个类的分数。不为None的时候,这个参数这决定了对数据进行平均的类型:

 ‘binary’: 只适用于二值标签,只计算pos_label指定的类的结果。

‘micro’:微平均。通过计算真阳性TP、假阴性FN和假阳性FP的总数来计算全局指标。

'macro': 宏平均。计算每个标签的指标,并找到它们的未加权平均值(算术平均值)。这并没有考虑标签的不平衡。

宏平均(Macro-averaging),是先对每一个类统计指标值,然后在对所有类求算术平均值。
微平均(Micro-averaging),是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标。

‘weighted’ :加权平均;计算每个标签的指标,并找到它们的平均加权支持(每种标签的真实实例的数量)。这改变了“宏平均”,来解释标签不平衡;它可能会导致一个f1分不在精确度precision和召回率recall之间。

‘samples’:计算每个实例的指标,并找到它们的平均值(仅对多标签分类有意义,在这一点上与accuracy_score不同)。

在语义分割任务中,背景的像素比例往往比前景大很多,导致正负样本的不均衡。

在我自己的语义分割任务中(二值分割)

分别设置的average 参数,以及结果:

微平均 micro
Ave_acc =  0.2997504340277778
Ave_precision =  0.735896051005142
Ave_reacall =  0.6041467601708711
Ave_f1 = 0.6078091057259477

宏平均  macro
Ave_acc =  0.2997504340277778
Ave_precision =  0.4363308268735685
Ave_reacall =  0.4074720391379879
Ave_f1 = 0.40265069553269844

加权平均 weighted
Ave_acc =  0.2997504340277778
Ave_precision =  0.6840019249546995
Ave_reacall =  0.6041467601708711
Ave_f1 = 0.6118078979696526

samples
Ave_acc =  0.2997504340277778
Ave_precision =  0.39671079922560304
Ave_reacall =  0.37206061465189394
Ave_f1 = 0.36792219997946074


参考学习链接:

图片语义分割评价指标计算MIOU、PRECISION、RECALL

Confusion matrix维基百科

更多推荐