alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

【747】多分类模型metrics计算

参考:Evaluation Metrics For Multi-class Classification(Micro-, Macro- 计算)

参考:多分类模型Accuracy, Precision, Recall和F1-score的超级无敌深入探讨

参考:二分类和多分类问题下的评价指标详析(Precision, Recall, F1,Micro,Macro)

参考:详解多分类模型的Macro-F1/Precision/Recall计算过程

参考:sklearn.metrics.precision_score, sklearn.metrics.recll_score, sklearn.metrics.f1_score, sklearn.metrics.accuracy_score

参考:分类评价指标 F值 详解 | Micro F1 & Macro F1 & Weight F1 【计算的是平均precision、recall和F1,因此三者本身不满足相应的调和平均关系】

参考:分类问题的评价指标:多分类【Precision、 micro-P、macro-P】、【Recall、micro-R、macro-R】、【F1、 micro-F1、macro-F1】

参考:Micro-average & Macro-average Scoring Metrics – Python

参考:Micro averaged precision, recall, and F1 are always the same


注意:Micro-Precision = Micro-Recall = Micro-F1 score = Accuracy(因此相对于Micro来说没啥作用)

这是因为在某一类中的False Positive样本,一定是其他某类别的False Negative样本。听起来有点抽象?举个例子,比如说系统错把「狗」预测成「猫」,那么对于狗而言,其错误类型就是False Negative,对于猫而言,其错误类型就是False Positive。于此同时,Micro-precision和Micro-recall的数值都等于Accuracy,因为它们计算了对角线样本数和总样本数的比值。参考:多分类模型Accuracy, Precision, Recall和F1-score的超级无敌深入探讨


通过argmax函数获取标签值

# test_preds 预测的结果是三维向量的小数值
# 需要通过 argmax 函数获取值最大的位置,也就是对应的标签值
y_pred_vector = np.argmax(y_pred_vector, axis=1)

代码:

from sklearn.metrics import f1_score, precision_score, recall_score
y_true=[1,2,3]
y_pred=[1,1,3]
f1 = f1_score( y_true, y_pred, average='macro' )
p = precision_score(y_true, y_pred, average='macro')
r = recall_score(y_true, y_pred, average='macro')
print(f1, p, r)
# output: 0.555555555556 0.5 0.666666666667

Accuracy

from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)

 

posted on   McDelfino  阅读(251)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示