sklearn.metrics中micro和macro的区别

sklearn安装

先看以下示例,区分micromacro的区别,这里直接调用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类总数
TP2338
FP2204
FN1124
TN76720

precision、recall和F1计算公式如下所示
p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP} precision=TP+FPTP

r e a l l = T P T P + F N reall=\frac{TP}{TP+FN} reall=TP+FNTP

F 1 = 2 ∗ p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l F1=\frac{2*precision*recall}{precision+recall} F1=precision+recall2precisionrecall

micro:利用总数的TP、FP和FN进行计算
m i c r o − p r e c i s i o n = 8 8 + 4 = 0.66666 micro-precision=\frac{8}{8+4}=0.66666 microprecision=8+48=0.66666

m i c r o − r e c a l l = 8 8 + 4 = 0.66666 micro-recall=\frac{8}{8+4}=0.66666 microrecall=8+48=0.66666

m i c r o − F 1 = 2 ∗ 0.66 ∗ 0.66 0.66 + 0.66 = 0.666 micro-F1=\frac{2*0.66*0.66}{0.66+0.66}=0.666 microF1=0.66+0.6620.660.66=0.666

macro:先计算各个类别的TP、FP和FN,在进行汇总计算
m a c r o − p r e c i s i o n = 1 n ∑ i = 1 n p r e c i s i o n i = 1 3 ( 2 2 + 2 + 3 3 + 2 + 3 3 + 0 ) = 7 10 macro-precision=\frac{1}{n} \sum_{i=1}^n precision_i=\frac{1}{3}(\frac{2}{2+2}+\frac{3}{3+2}+\frac{3}{3+0})=\frac{7}{10} macroprecision=n1i=1nprecisioni=31(2+22+3+23+3+03)=107

m a c r o − r e c a l l = 1 n ∑ i = 1 n r e c a l l i = 1 3 ( 2 2 + 1 + 3 3 + 1 + 3 3 + 2 ) = 121 180 = 0.67222 macro-recall=\frac{1}{n} \sum_{i=1}^n recall_i=\frac{1}{3}(\frac{2}{2+1}+\frac{3}{3+1}+\frac{3}{3+2})=\frac{121}{180}=0.67222 macrorecall=n1i=1nrecalli=31(2+12+3+13+3+23)=180121=0.67222

m a c r o − F 1 = 1 n ∑ i = 1 n F 1 i = 0.66269 macro-F1=\frac{1}{n} \sum_{i=1}^n F1_i=0.66269 macroF1=n1i=1nF1i=0.66269

通过上述示例就可以清楚地知道micro和macro的区别了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trouble..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值