sklearn(十一)计算混淆矩阵:confusion_matrix和multilabel_confusion_matrix

本文介绍了混淆矩阵在二分类和多分类任务中的应用,详细解释了查准率和召回率,并提供了使用sklearn库计算和可视化混淆矩阵的代码示例。同时,讨论了多标签混淆矩阵(MCM)的计算方法,它通过one-vs-rest策略转化多分类问题。通过实例展示了如何解读混淆矩阵,帮助识别模型预测中的常见错误和类别混淆情况。
摘要由CSDN通过智能技术生成

1.混淆矩阵confusion_matrix

适用于二分类、多分类。

每一行之和表示该类别的真实样本数量,每一列之和表示被预测为该类别的样本数量。

1.分类模型之混淆矩阵:
            每一行和每一列分别对应样本输出中的每一个类别,行表示实际类别,列表示预测类别。
                        A类别    B类别    C类别
                A类别    5        0        0
                B类别    0        6        0
                C类别    0        0        7

            查准率 = 主对角线上的值 / 该值所在列的和
            召回率 = 主对角线上的值 / 该值所在行的和
 获取模型分类结果的混淆矩阵的相关API:
            import sklearn.metrics as sm
            sm.confusion_matrix(实际输出, 预测输出)->混淆矩阵

例子如下,从下面矩阵中,我们能看出来,预测错误分到的类别,看看哪些类别更容易混淆,例子中的第四类,有122个预测为了第三类,说明跟第四类跟第三类容易混淆,仔细看了下文本内容,二者确实难舍难分。

    import sklearn.metrics as sm
    matrixes = sm.confusion_matrix(labels, predicts)
    print(matrixes)

输出:
[[ 71   1   2   0]
 [  7 203  10   0]
 [  2  32 139   1]
 [ 32  88 122  40]]

    import matplotlib.pyplot as mp
    mp.figure('Confusion Matrix')
    mp.xticks([])
    mp.yticks([])
    mp.imshow(matrixes, cmap='gray')
    mp.show()

画图如下,颜色越深,说明分错的越少。

2.multilabel_confusion_matrix

只用于多分类。

sklearn.metrics.multilabel_confusion_matrix 是 scikit-learn 0.21 新增的一个函数。看名字可知道是用来计算多标签的混淆矩阵的。不过也可以用它来计算多分类的混淆矩阵。MCM将多分类数据转化为2分类问题,采用one-vs-rest策略,即某一类为正样本,其余类别为负样本。每一类都作为正样本,计算混淆矩阵。按标签的顺序返回所有。MCM 返回的每一个二分类混淆矩阵中,TN 在 [0, 0] ,FN 在 [1, 0] 是 , TP 在[1,1], FP 在 [1, 0] , 即

TNFP
FNTP

例子如下,这个例子严格按照上面表格中TN、FP、FN、TP来统计结果,看不出来某一类错分到了哪一类。数据解读:第一个类别的数据:TN=635  FP=41
  FN=3  TP=71。

    from sklearn import metrics
    mcm = metrics.multilabel_confusion_matrix(labels, predicts)
    print(mcm)
输出:
[[[635  41]
  [  3  71]]

 [[409 121]
  [ 17 203]]

 [[442 134]
  [ 35 139]]

 [[467   1]
  [242  40]]]

参考:

1.混淆矩阵:https://www.cnblogs.com/jiangkejie/p/13087490.html 

引用\[2\]中提到,混淆矩阵是一种可视化工具,用于比较分类结果和实际测得值。它可以将分类结果的精度显示在一个矩阵中。混淆矩阵通常用于监督学习中,特别是在机器学习领域。它可以帮助我们了解分类器在不同类别上的表现,以及哪些类别容易被混淆。在混淆矩阵中,每一行代表实际类别,每一列代表预测类别。矩阵的对角线上的元素表示分类正确的样本数,而非对角线上的元素表示分类错误的样本数。通过观察混淆矩阵,我们可以得出哪些类别更容易被混淆。在引用\[1\]的例子中,混淆矩阵显示了四个类别之间的预测结果,可以看出第四类和第三类之间容易混淆,因为有122个样本被错误地预测为第三类。 #### 引用[.reference_title] - *1* *3* [sklearn(十一)计算混淆矩阵confusion_matrixmultilabel_confusion_matrix](https://blog.csdn.net/pearl8899/article/details/115730187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [[机器学习笔记] 混淆矩阵Confusion Matrix)](https://blog.csdn.net/seagal890/article/details/105059498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值