模型评估指标micro avg、macro avg和weighted avg的计算方式及区别
Python爬虫与算法
共 1585字,需浏览 4分钟
·
2021-04-12 23:57
在机器学习和深度学习模型评估结果中,我们经常会遇到micro avg、macro avg和weighted avg。本文将会介绍这三种模型评估指标的计算方式以及它们之间的区别。
我们以sklearn.metrics.classification_report
的输出结果作为展示,示例模型评估结果如下:
maro avg的中文名称为宏平均
,其计算方式为每个类型的P、R的算术平均,我们以F1的macro avg为例,上述输出结果中的macro avg F1值的计算方式为:
macro avg F1 = (0.90+0.73)/2=0.815
weighted avg的计算方式与micro avg很相似,只不过weighted avg是用每一个类别样本数量在所有类别的样本总数的占比作为权重,因此weighted avg的计算方式为:
weighted avg = 0.90*1207/1756+0.73*549/1756=0.8468
micro avg的中文名称为微平均
,是对数据集中的每一个示例不分类别进行统计建立全局混淆矩阵,然后计算相应的指标。在微平均评估指标中,样本数多的类别主导着样本数少的类,其计算公式如下:
其中TP为被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的样本数,FP为被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的样本数。
以下面的代码为例:
# -*- coding: utf-8 -*-
from sklearn.metrics import confusion_matrix, precision_score
y_true = ["A", "A", "A", "A", "B", "B", "C", "C", "C", "C", "C"]
y_pred = ["A", "B", "A", "A", "B", "A", "B", "C", "C", "C", "C"]
print(confusion_matrix(y_true, y_pred))
print(precision_score(y_true, y_pred, average='micro'))
输出的混淆矩阵和micro avg precision为:
[[3 1 0]
[1 1 0]
[0 1 4]]
0.7272727272727273
对于类别A,它的TP=3, FP=1;对于类别B,它的TP=1, FP=1;对于类别C,它的TP=4,FP=1,因此micro avg precision为:
(3+1+4)/(3+1+1+1+4+1)=0.7273
本文的目的在于简单介绍模型评估指标micro avg、macro avg和weighted avg的区别以及它们的计算方式,网上有很多文章存在错误,应该引起重视。后面有机会再详细介绍。
本文到此结束,感谢阅读~
评论