首页 > 其他 > 详细

关于NLP多分类任务评价指标的总结

时间:2020-09-12 18:58:01      阅读:151      评论:0      收藏:0      [点我收藏+]

点击这里查看sklearn官方文档

sklearn.metrics模块实现了几个损失、得分和效用函数来衡量分类性能

1、四个基本概念

TP、True Positive   真阳性:预测为正,实际为正

FP、False Positive  假阳性:预测为正,实际为负

FN、False Negative 假阴性:预测为负、实际为正

TN、True Negative 真阴性:预测为负、实际为负

2、二分类指标

3、多分类指标

....

F1-score:

是统计学中用来衡量二分类模型精确度的一种指标,用于测量不均衡数据的精度。它同时兼顾了分类模型的精确率和召回率。F1-score可以看作是模型精确率和召回率的一种加权平均,它的最大值是1,最小值是0。

在多分类问题中,如果要计算模型的F1-score,则有两种计算方式,分别为micro-F1和macro-F1,这两种计算方式在二分类中与F1-score的计算方式一样,所以在二分类问题中,计算micro-F1=macro-F1=F1-score,micro-F1和macro-F1都是多分类F1-score的两种计算方式;

micro-F1:

  • 计算方法:先计算所有类别的总的Precision和Recall,然后计算出来的F1值即为micro-F1;
  • 取值范围:(0, 1);
  • 适用环境:在计算公式中考虑到了每个类别的数量,多分类不平衡,若数据极度不平衡会影响结果;

marco-F1:

  • 计算方法:将所有类别的Precision和Recall求平均,然后计算F1值作为macro-F1;
  • 取值范围:(0, 1);
  • 适用环境:多分类问题,没有考虑到数据的数量,所以会平等的看待每一类,不受数据不平衡影响,容易受到识别性高(高recall、高precision)的类别影响;
#指标测试
from sklearn import metrics
from sklearn.metrics import accuracy_score, precision_score, recall_score
from sklearn.metrics import f1_score
def Evaluate1(y_test,y_predic):
    print(accuracy:, metrics.accuracy_score(y_test, y_predict)) #预测准确率输出
    print(macro_precision:,metrics.precision_score(y_test,y_predict,average=macro)) #预测宏平均精确率输出
    print(micro_precision:, metrics.precision_score(y_test, y_predict, average=micro)) #预测微平均精确率输出
    # print(‘weighted_precision:‘, metrics.precision_score(y_test, y_predict, average=‘weighted‘)) #预测加权平均精确率输出
    print(macro_recall:,metrics.recall_score(y_test,y_predict,average=macro))#预测宏平均召回率输出
    print(micro_recall:,metrics.recall_score(y_test,y_predict,average=micro))#预测微平均召回率输出
    # print(‘weighted_recall:‘,metrics.recall_score(y_test,y_predict,average=‘weighted‘))#预测加权平均召回率输出
    print(macro_f1:,metrics.f1_score(y_test,y_predict,labels=[0,1,2,3,4,5,6],average=macro))#预测宏平均f1-score输出
    print(micro_f1:,metrics.f1_score(y_test,y_predict,labels=[0,1,2,3,4,5,6,7],average=micro))#预测微平均f1-score输出
    # print(‘weighted_f1:‘,metrics.f1_score(y_test,y_predict,labels=[0,1,2,3,4,5,6],average=‘weighted‘))#预测加权平均f1-score输出
    #target_names = [‘class 1‘, ‘class 2‘, ‘class 3‘,‘class 4‘,‘class 5‘,‘class 6‘,‘class 7‘]
    # print(‘混淆矩阵输出:\n‘,metrics.confusion_matrix(y_test,y_predict,labels=[0,1,2,3,4,5,6]))#混淆矩阵输出 #比如[1,3]为2,即1类预测为3类的个数为2
    # print(‘分类报告:\n‘, metrics.classification_report(y_test, y_predict,labels=[0,1,2,3,4,5,6]))#分类报告输出 ,target_names=target_names
def Evaluate2(y_true,y_pred):
    print("accuracy:", accuracy_score(y_true, y_pred))  # Return the number of correctly classified samples
    print("macro_precision", precision_score(y_true, y_pred, average=macro))
    print("micro_precision", precision_score(y_true, y_pred, average=micro))
    # Calculate recall score
    print("macro_recall", recall_score(y_true, y_pred, average=macro))
    print("micro_recall", recall_score(y_true, y_pred, average=micro))
    # Calculate f1 score
    print("macro_f", f1_score(y_true, y_pred, average=macro))
    print("micro_f", f1_score(y_true, y_pred, average=micro))

y_test    = [1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4,5,5,6,6,6,0,0,0,0]
y_predict = [1, 1, 1, 3, 3, 2, 2, 3, 3, 3, 4, 3, 4, 3,5,1,3,6,6,1,1,0,6]
Evaluate1(y_test,y_predict)
Evaluate2(y_test,y_predict)

##其中列表左边的一列为分类的标签名,右边support列为每个标签的出现次数.avg / total行为各列的均值(support列为总和).
##precision recall f1-score三列分别为各个类别的精确度/召回率及 F1值
‘‘‘
accuracy: 0.5217391304347826
macro_precision: 0.7023809523809524
micro_precision: 0.5217391304347826
macro_recall: 0.5261904761904762
micro_recall: 0.5217391304347826
macro_f1: 0.5441558441558441
micro_f1: 0.5217391304347826

accuracy: 0.5217391304347826
macro_precision 0.7023809523809524
micro_precision 0.5217391304347826
macro_recall 0.5261904761904762
micro_recall 0.5217391304347826
macro_f 0.5441558441558441
micro_f 0.5217391304347826
‘‘‘

 


参考:

https://blog.csdn.net/lyb3b3b/article/details/84819931

https://blog.csdn.net/qq_43190189/article/details/105778058

关于NLP多分类任务评价指标的总结

原文:https://www.cnblogs.com/xuechengmeigui/p/13657545.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!