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] , 即

TN FP
FN TP

例子如下,这个例子严格按照上面表格中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 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐