【笔记】关于多分类问题中的混淆矩阵,精准率

作者:神秘网友 发布时间:2021-01-25 13:51:48

【笔记】关于多分类问题中的混淆矩阵,精准率

关于多分类问题中的混淆矩阵,精准率

具体操作

(在notebook中)

使用手写识别数据集,使用全部的样本数据,不做限制,对数据进行分割,使用逻辑回归算法,求解出准确度

  import numpy as np
  import matplotlib.pyplot as plt
  from sklearn import datasets

  digits = datasets.load_digits()
  X = digits.data
  y = digits.target

  from sklearn.model_selection import train_test_split
  X_train,X_test,y_train,y_test =  train_test_split(X,y,test_size=0.8,random_state=666)

  from sklearn.linear_model import LogisticRegression

  log_reg = LogisticRegression()
  log_reg.fit(X_train,y_train)
  log_reg.score(X_test,y_test)

结果如下

进行预测

  y_predict = log_reg.predict(X_test)

计算精准率,需要将average设置为micro

  from sklearn.metrics import precision_score

  precision_score(y_test,y_predict,average="micro")

结果如下

计算混淆矩阵(不用修改,其本身就可以计算多分类)

  from sklearn.metrics import confusion_matrix

  confusion_matrix(y_test,y_predict)

结果如下(10*10的矩阵)

绘制图像,使用matshow来绘制一个矩阵,传入参数为矩阵以及颜色的映射(设置为plt的灰度值)

  cfm = confusion_matrix(y_test,y_predict)
  plt.matshow(cfm,cmap=plt.cm.gray)

图像如下(越亮越大,越小越黑)

对矩阵的处理,设置一个记录行的样本,按照列方向求和,设置一个的矩阵,使矩阵除以这行的数字和,将对角线的数字填充为0,然后输出

  row_sums = np.sum(cfm,axis=1)
  err_matrix = cfm / row_sums
  np.fill_diagonal(err_matrix,0)
  err_matrix

结果如下(部分内容)

绘制矩阵

  plt.matshow(err_matrix,cmap=plt.cm.gray)

图像如下

这个结果反应的就是对于多分类问题来説,越亮代表犯错越多,这样就可以看到犯错的情况,然后改进算法,修改域值来微调算法或是别的操作来优化,有可能不是算法的问题,可能是因为样本问题

【笔记】关于多分类问题中的混淆矩阵,精准率 相关文章

  1. 【笔记】ROC曲线

    ROC曲线 前文讲了PR曲线 这里说ROC曲线,其描述的是TPR和FPR之间的关系 TPR是什么呢,TPR就是召回率 FPR是什么呢,FPR就是和TPR对应的,即真实值为0的一行中的预测为1的部分比例 和精准率和召回率一样,TPR和FPR之间也有着内在的联系,TPR越高,FPR越高,反

  2. Python深度学习笔记09--使用Keras建立循环神经网络

    6.2 理解循环神经网络 6.2.1 Keras中的循环层: 1 from keras.layers import SimpleRNN 2 3 from keras.models import Sequential 4 from keras.layers import Embedding, SimpleRNN 5 6 model = Sequential() 7 model.add(Embedding(10000, 32)) 8 model.ad

  3. 关于我想了很久才想出这题咋做这档事2

    #0.0 目录 目录中以下题目皆可点击查看原题 P7074 [CSP-J2020] 方格取数 P3842 [TJOI2007]线段 P2661 [NOIP2015 提高组] 信息传递 #1.0 P7074 [CSP-J2020] 方格取数 本题是CSP-J2020-T4,本人在考场上遇见时,竟没有推出转移方程,现在看来十分可惜qwq #1.1

  4. 【笔记】F1 score

    F1 score 关于精准率和召回率 精准率和召回率可以很好的评价对于数据极度偏斜的二分类问题的算法,有个问题,毕竟是两个指标,有的时候这两个指标也会产生差异,对于不同的算法,精准率可能高一些,召回率可能低一些,反之一样,真正使用的时候应该根据具体

  5. 【笔记】混淆矩阵,精准率和召回率

    混淆矩阵,精准率和召回率 评论回归算法的好坏点击这里 评价分类算法是不能单单靠一个分类准确度就可以衡量的,单用一个分类准确度是有问题的 比如说,一个癌症预测系统,输入体检信息,就可以判断是否得了癌症,这个系统的预测准确率有99.9%,但是不能说这

  6. 替罪羊树学习笔记

    Part 0 引子 我们都知道,有一种东西叫 BST。 我们都知道,BST 在极限数据会卡爆。 我们都知道,为了让 BST 不被卡,有很多种平衡树。 但你知道有一种平衡树好写速度快吗那就是替罪羊树。 Part 1 替罪羊树平衡的原理 替罪羊树是一种平衡树,一种平衡的 BST。

  7. Python深度学习笔记08--处理文本数据的常用方法

    6.1 处理文本数据 6.1.1 单词和字符的one-hot编码 (1)单词级的one-hot编码: 1 # 单词级的one-hot编码 2 import numpy as np 3 4 # 初始数据:每个样本是列表的一个元素(本例中的样本是一个句子,但也可以是一整篇文档) 5 samples = ['The cat sat on the ma

  8. SAS初学者笔记---004---循环结构与判断结构

    关于循环与判断的语句在所有程序设计中十分重要,在SAS程序中也不例外。逻辑清晰的循环与判断结构是日后进行数据清洗、数据构造的必要前提。(反正就是很重要就对了) 循环结构 关于循环结构,常见的有三种类型 DO Index. 索引循环,此语句是DO循环语句中最

  9. JUnit学习笔记

    junit学习笔记 不影响原有类的情况下,生成测试类。 IDEA下载插件 插件名字为JUnitGeneratorV2.0 方法 Setting选项中的Plugins里搜索下载 Setting选项中的JUnnit Generator中的Output Path配置测试类存放位置 ${SOURCEPATH}/../test/${PACKAGE}/${FILENAME}

  10. 对于线性回归通俗理解的笔记

    经常听说线性回归(Linear Regression) 到底什么才是线性,什么才是回归 有学者说,线性回归模型是一切模型之母。所以,我们的机器学习之旅,也将从这个模型开始! 建立回归模型的好处:随便给一个x,就能通过模型算出y,这个y可能和实际值不一样,这个y是

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2020, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词