混淆矩阵 python,多分类的混淆矩阵

  混淆矩阵 python,多分类的混淆矩阵

  本文主要介绍两种多分类混淆矩阵的Python实现。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  00-1010 1.什么是混淆矩阵2,分类模型的评价指标3,两种多分类混淆矩阵3.1?直接打印出每个类别的分类准确率。3.2打印具体分类结果的数值4。总结一下。

  

目录

  在深度学习中,混淆矩阵是绘制ROC曲线的基础,也是衡量分类模型准确性的最基本、最直观、最简单的方法。它可以直观地了解分类模型在每一类样本中的表现,经常作为模型评估的一部分。它可以很容易地指出多个类之间是否存在混淆(即一个类被预测为另一个类)。

  首先,我们必须澄清几个概念:

  或者t:样本是否被正确分类。

  或者p:样本是阳性还是阴性。

  真正(TP):预测正确;模型也是正例,样本的真类别是正例,真负例(TN):正确预测:模型预测负例,样本的真类别是负例,假正例(FP):预测误差:模型预测正例,样本的真类别是负例,假负例(FN):预测误差;模型预测为负例,样本真实类别为正例。将这四个指标一起呈现在一个表格中,就可以得到下面这个矩阵,我们称之为混淆矩阵。在这里,我从其他文章里偷了一张图:

  在混合线矩阵中,对角线是分割线。上图就是一个例子:对角线位置表示预测正确,对角线外的位置表示该样本被错误预测为其他样本。

  

1、什么是混淆矩阵

  从混淆矩阵中,可以直观地看到各个参数的数值。准确率是模型预测对在所有模型预测为正的样本中所占的比例,即“分类器认为是正的且为正的部分占所有分类器认为是正的比例”。计算公式如下:

  F1分数指示器结合了精确度和召回率的输出结果。f1-得分范围从0到1,1代表模型的最佳输出,0代表模型的最差输出。计算公式如下:

  除了F1分,F2分和F0.5分在统计中也有广泛应用。其中,在F2评分中,召回率的权重高于精确率的权重,而在F0.5评分中,精确率的权重高于召回率的权重。

  

2、分类模型评价指标

  多分类混淆矩阵可以根据不同的要求绘制不同的矩阵:

  1.直接打印出每个类别的分类准确率。

  2.打印具体分类结果的数值,便于各种指标的数据分析和计算。

  在介绍具体代码之前,先介绍一下混淆_矩阵()函数,这是Python中sklearn库提供的输出矩阵数据的方法:

  定义混淆矩阵(y_true,y_pred,labels=None,sample_weight=None):

  参数含义:

  Y _ true3360是样本的真实分类结果,y _ pred3360是样本的预测分类结果y _ pred:预测结果标签:给定类别,通过它可以选择类别sample_weight :样本权重

  

3、两种多分类混淆矩阵

  #显示混淆矩阵

  定义绘图_混淆(模型,x _值,y _值):

  #获得预测结果

  预测=预测(模型,x_val)

  #获得真正的标签

  true label=y _ val . arg max(axis=-1)#将one-hot转换为标签

  cm=混淆矩阵

  (y_true=truelabel, y_pred=predictions)

   plt.figure()

   # 指定分类类别

   classes = range(np.max(truelabel)+1)

   title=Confusion matrix

   #混淆矩阵颜色风格

   cmap=plt.cm.jet

   cm = cm.astype(float) / cm.sum(axis=1)[:, np.newaxis]

   plt.imshow(cm, interpolation=nearest, cmap=cmap)

   plt.title(title)

   plt.colorbar()

   tick_marks = np.arange(len(classes))

   plt.xticks(tick_marks, classes, rotation=45)

   plt.yticks(tick_marks, classes)

   thresh = cm.max() / 2.

   # 按照行和列填写百分比数据

   for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):

   plt.text(j, i, {:.2f}.format(cm[i, j]), horizontalalignment="center",

   color="white" if cm[i, j] > thresh else "black")

   plt.tight_layout()

   plt.ylabel(True label)

   plt.xlabel(Predicted label)

   plt.show()

  

  

  

  

3.2打印具体的分类结果的数值

  

# 显示混淆矩阵

  def plot_confuse_data(model, x_val, y_val):

   classes = range(0,6)

   predictions = predict(model,x_val)

   truelabel = y_val.argmax(axis=-1) # 将one-hot转化为label

   confusion = confusion_matrix(y_true=truelabel, y_pred=predictions)

   #颜色风格为绿。。。。

   plt.imshow(confusion, cmap=plt.cm.Greens)

  # ticks 坐标轴的坐标点

  # label 坐标轴标签说明

   indices = range(len(confusion))

  # 第一个是迭代对象,表示坐标的显示顺序,第二个参数是坐标轴显示列表

   plt.xticks(indices, classes)

   plt.yticks(indices, classes)

   plt.colorbar()

   plt.xlabel(Predicted label)

   plt.ylabel(True label)

   plt.title(Confusion matrix)

  # plt.rcParams两行是用于解决标签不能显示汉字的问题

   plt.rcParams[font.sans-serif]=[SimHei]

   plt.rcParams[axes.unicode_minus] = False

  # 显示数据

   for first_index in range(len(confusion)): #第几行

   for second_index in range(len(confusion[first_index])): #第几列

   plt.text(first_index, second_index, confusion[first_index][second_index])

  # 显示

   plt.show()

  

  

  

  

4、总结

  1、混淆矩阵是深度学习中分类模型最常用的评估指标。网上大部分都是显示各类的分类正确率,不够灵活。显示具体数值灵活性大,可以计算自己想要的指标。

  2、多分类的混淆矩阵中 查准率为主对角线上的值除以该值所在列的和;召回率等于主对角线上的值除以该值所在行的和。

  以上就是Python实现两种多分类混淆矩阵的详细内容,更多关于Python多分类混淆矩阵的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: