当前位置:   article > 正文

关于多分类的评价指标acc、pre、recall、f1_acc和pr评价指标一般哪一个大

acc和pr评价指标一般哪一个大

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 各个分类:
    在这里插入图片描述根据混淆矩阵计算每个类别的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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
如果每个类别的样本数量差不多,那么宏平均和微平均没有太大差异
**如果每个类别的样本数量差异很大,那么注重样本量多的类时使用微平均,注重样本量少的类时使用宏平均**
如果微平均大大低于宏平均,那么检查样本量多的类来确定指标表现差的原因
如果宏平均大大低于微平均,那么检查样本量少的类来确定指标表现差的原因
  • 1
  • 2
  • 3
  • 4

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/142883
推荐阅读
相关标签
  

闽ICP备14008679号