sklearn安装
先看以下示例,区分micro和macro的区别,这里直接调用sklearn封装好的接口,如果没有安装sklearn可以使用以下命令进行安装:
pip install scikit-learn
如果直接使用
pip install sklearn
是没有作用的,将会安装一个未知的第三方库。
micro和macro区别
先看一段简单的代码示例:
from sklearn.metrics import precision_score, recall_score, f1_score a = [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3] #真实 b = [1, 1, 2, 1, 2, 2, 2, 2, 3, 1, 3, 3] #预测 print(precision_score(a, b, average='micro'), precision_score(a, b, average='macro')) print(recall_score(a, b, average='micro'), recall_score(a, b, average='macro')) print(f1_score(a, b, average='micro'), f1_score(a, b, average='macro')) ''' 0.6666666666666666 0.7000000000000001 0.6666666666666666 0.6722222222222222 0.6666666666666666 0.6626984126984127 '''
我们可以构建混淆矩阵进行说明,混淆矩阵的四个基本概念:
- TP:true positive,指的是正例,表示预测结果为真,标签的结果为真。
- FP:false positive,指的是假阳,表示预测结果为真,标签的结果为假。
- FN:false negative,指的是假阴,表示预测结果为假,标签的结果为真。
- TN:false negative,指的是假阳,表示预测结果为假,标签的结果为假。
所以可以对上述实例构建混淆矩阵
1类 |
2类 | 3类 | 总数 | |
TP | 2 | 3 | 3 | 8 |
FP | 2 | 2 | 0 | 4 |
FN | 1 | 1 | 2 | 4 |
TN | 7 | 6 | 7 | 20 |
precision、recall和F1计算公式如下所示
micro:利用总数的TP、FP和FN进行计算
macro:先计算各个类别的TP、FP和FN,在进行汇总计算
通过上述示例就可以清楚地知道micro和macro的区别了。