混淆矩阵

混淆矩阵

预测 Positive 预测 Negtive
真实 Positive TP FN
真实 Negtive FP TN

precision、recall和f1

precision=TP/(TP+FP)
recall=TP/(TP+FN)

关于precision和recall的解释可以参考sklearn的文档。不吹不黑,sklearn的文档真的就是一本优秀的机器学习教程,简明易懂还有代码。
https://scikit-learn.org/stable/modules/model_evaluation.html#precision-recall-f-measure-metrics

通俗理解:

Intuitively, precision is the ability of the classifier not to label as positive a sample that is negative, and recall is the ability of the classifier to find all the positive samples.

通俗来说,precision是分类器不把负样本分类为正样本的能力,recall是将所有正样本都找出来的能力。
需要注意的是,这两个一般是相反的,precision高,recall会相应的降低。(当然,有人会说那我全分对了两个值不就都是1了吗?对,这确实是理想情况,但是事实上,提高recall会让模型偏向于分类为正样本,导致负样本中也有更多的样本被分为正样本)

二者的调和均值是F1。

计算:

copy
>>> from sklearn.metrics import recall_score, accuracy_score, f1_score >>> prediction_ids = [0,0,0,1,1,1,1,1] >>> label_ids = [0,0,1,0,1,0,1,1] >>> accuracy_score(label_ids, prediction_ids) 0.625 >>> recall_score(label_ids, prediction_ids) 0.75 >>> recall_score(label_ids, prediction_ids, pos_label=0) 0.5 >>> f1_score(label_ids, prediction_ids) 0.6666666666666665

recall_score的pos_label参数的意义是:positive_label,也就是Positive的标签号。默认是1,也就是TP指:实际是1,预测也是1。

sklearn的混淆矩阵横纵坐标排布

copy
>>> from sklearn.metrics import confusion_matrix >>> prediction_ids = [0,0,0,1,1,1,1,1] >>> label_ids = [0,0,1,0,1,0,1,1] >>> confusion_matrix(label_ids, prediction_ids) array([[2, 2], [1, 3]])

这里对应的混淆矩阵是:

预测 0 预测 1
真实 0 2 2
真实 1 1 3

也就是一个数字的行坐标代表真实标签,列坐标代表预测标签。

posted @   王冰冰  阅读(71)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起