关于多分类的评价指标acc、pre、recall、f1

1.准确率ACC:

  • overall:

准确率是分类正确的样本占总样本个数的比例,即
在这里插入图片描述
其中, ncorrect​为被正确分类的样本个数, ntotal​为总样本个数。
结合上面的混淆矩阵,公式还可以这样写:
在这里插入图片描述

y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
print(accuracy_score(y_true, y_pred))  # 0.5
print(accuracy_score(y_true, y_pred, normalize=False))  # 2
# 在具有二元标签指示符的多标签分类案例中
print(accuracy_score(np.array([[0, 1], [1, 1]]), np.ones((2, 2))))  # 0.5
  • 各个分类:
    在这里插入图片描述根据混淆矩阵计算每个类别的acc,pre,recall,f1

2.精确率precision:
分类器不将负样本标记为正样本的能力。

  • overall:
    在这里插入图片描述
    在多分类任务中需要 average 的参数:

‘binary’: 仅报告由pos_label指定的类的结果. 这仅适用于目标(y_{true, pred})是二进制的情况.
‘micro’: 通过计算总的真正性、假负性和假正性来全局计算指标.
‘macro’: 为每个标签计算指标,找到它们未加权的均值. 它不考虑标签数量不平衡的情况.
‘weighted’: 为每个标签计算指标,并通过各类占比找到它们的加权均值(每个标签的正例数).它解决了’macro’的标签不平衡问题;它可以产生不在精确率和召回率之间的F-score.

y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
print(precision_score(y_true, y_pred, average='micro'))  # all:0.3333333333333333
print(precision_score(y_true, y_pred, average='macro'))  # averge:0.2222222222222222
print(precision_score(y_true, y_pred, average='weighted'))  # weighted:0.2222222222222222

y_true = [0, 1, 3, 0, 1, 2]
y_pred = [0, 2, 3, 0, 0, 1]
print(precision_score(y_true, y_pred, average='micro'))  # all:0.5
print(precision_score(y_true, y_pred, average='macro'))  # averge:0.41666666666666663
print(precision_score(y_true, y_pred, average='weighted'))  # weighted:0.38888888888888884
如果每个类别的样本数量差不多,那么宏平均和微平均没有太大差异
**如果每个类别的样本数量差异很大,那么注重样本量多的类时使用微平均,注重样本量少的类时使用宏平均**
如果微平均大大低于宏平均,那么检查样本量多的类来确定指标表现差的原因
如果宏平均大大低于微平均,那么检查样本量少的类来确定指标表现差的原因

3.召回率recall:

y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
print(recall_score(y_true, y_pred, average='micro'))  # 0.3333333333333333
print(recall_score(y_true, y_pred, average='macro'))  # 0.3333333333333333
print(recall_score(y_true, y_pred, average='weighted'))  # 0.3333333333333333
y_true = [0, 1, 3, 0, 1, 2]
y_pred = [0, 2, 0, 0, 0, 1]
print(recall_score(y_true, y_pred, average='micro'))  # 0.3333333333333333
print(recall_score(y_true, y_pred, average='macro'))  # 0.25
print(recall_score(y_true, y_pred, average='weighted'))  # 0.3333333333333333

4.F1score:
精确率和召回率的调和平均值,F1 score越高,说明模型越稳健。
5.P-R曲线

可以尝试调试不同样本分配的额度来,看P-R曲线选择最佳样本分配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值