Sklearn metric:recall,f1 的averages参数[None, ‘binary’ (default), ‘micro’, ‘macro’, ‘samples’, weighted
官方文档链接:(以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
参考学习链接:
更多推荐


所有评论(0)