混淆矩阵含义及python代码实现

一、分类评估指标中定义的一些符号含义

  1. TP:将正类预测为正类数,真实为0,预测也为0
  2. FN:将正类预测为负类数,真实为0,预测为1
  3. FP:将负类预测为正类数, 真实为1,预测为0
  4. 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

  • 8
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值