一、分类评估指标中定义的一些符号含义
- TP:将正类预测为正类数,真实为0,预测也为0
- FN:将正类预测为负类数,真实为0,预测为1
- FP:将负类预测为正类数, 真实为1,预测为0
- TN:将负类预测为负类数,真实为1,预测也为1
二、混淆矩阵定义及表示含义
混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值。
二分类问题:
混淆矩阵 |
预测值 |
||
正(猫) | 负(狗) | ||
真实值 |
正(猫) | 3 | 0 |
负(狗) | 1 | 2 |
通过混淆矩阵我们可以轻松算的真实值猫的数量(行数量相加)为3=3+0,分类得到猫的数量(列数量相加)为4=3+1。真实狗的数量为3=1+2,分类得到狗的数量为2=0+2。同时,我们不难发现,对于二分类问题,矩阵中的4个元素刚好表示TP,TN,FP,TN这四个符号量 。
混淆矩阵 |
预测值 |
||
正 | 负 | ||
真实值 |
正 | TP(a) | FN(b) |
负 | FP(c) | TN(d) |
则:精确率:Precision=a/(a+c)=TP/(TP+FP)
召回率:recall=a/(a+b)=TP/(TP+FN)
准确率:accuracy=(a+d)/(a+b+c+d)=(TP+TN)/(TP+FN+FP+TN)
多分类问题:
混淆矩阵 |
预测值 |
|||
类别1 | 类别2 | 类别3 | ||
真实值 |
类别1 | a | b | c |
类别2 | d | e | f | |
类别3 | g | h | i |
矩阵行数据相加是真实值类别数,召回率_类别1=a/(a+b+c) 。列数据相加是分类后的类别数, 精确率_类别1=a/(a+d+g)。对角线相加是分类准确率,准确率accuracy=(a+e+i)/(a+b+c+d+e+f+g+h+i)
三、Python代码实现混淆矩阵
sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)
y_true:是样本真实分类结果,y_pred 是样本预测分类结果 ,labels是所给出的类别,通过这个可对类别进行选择 ,sample_weight 是样本权重。我们用confusion_matrix生成矩阵数据,然后用seaborn的热度图绘制出混淆矩阵数据:
import seaborn as sns
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
sns.set()
y_true = ["cat", "dog", "cat", "cat", "dog", "rebit"]
y_pred = ["dog", "dog", "rebit", "cat", "dog", "cat"]
C2= confusion_matrix(y_true, y_pred, labels=["dog", "rebit", "cat"])
sns.heatmap(C2,annot=True)
参考文献:
https://baijiahao.baidu.com/s?id=1619821729031070174&wfr=spider&for=pc
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38293.html