多分类问题中的混淆矩阵

#十分类问题
import matplotlib.pyplot as plt
import numpy as np

数据

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)

使用OvR方式解决分类问题

#默认使用OvR方式解决分类问题
from sklearn.linear_model import LogisticRegressionlog_reg = LogisticRegression()
log_reg.fit(X_train,y_train)
log_reg.score(X_test,y_test)
0.93115438108484
y_predict = log_reg.predict(X_test)

默认求解二分类问题,如果需要多分类问题求解则需要调整参数average='micro‘

#precision_score默认求解二分类问题,如果需要多分类问题求解则需要调整参数
from sklearn.metrics import precision_score
precision_score(y_test,y_predict,average='micro')
#recall 和 f1_score也有类似参数
0.93115438108484

混淆矩阵

from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_predict)
array([[139,   0,   0,   0,   1,   0,   2,   0,   0,   0],[  0, 138,   0,   3,   0,   0,   3,   1,   2,   7],[  0,   2, 134,   6,   0,   0,   1,   0,   5,   0],[  0,   2,   2, 128,   0,   2,   0,   4,   1,   2],[  0,   1,   0,   0, 130,   0,   0,   8,   2,   1],[  0,   2,   0,   0,   1, 138,   1,   1,   1,   4],[  0,   1,   0,   0,   0,   0, 140,   0,   0,   0],[  0,   0,   0,   0,   0,   0,   0, 148,   2,   0],[  0,   5,   1,   0,   0,   3,   1,   0, 117,   3],[  0,   3,   0,   1,   0,   3,   0,   7,   1, 127]], dtype=int64)

绘制一下混淆矩阵

#绘制一下混淆矩阵
cfm = confusion_matrix(y_test,y_predict)
plt.matshow(cfm,cmap=plt.cm.gray)


继续处理,我们关注的是误判的

#继续处理
row_sums = np.sum(cfm,axis=1)#行方向求和
erro_matrix = cfm / row_sums # 计算错误比例
#把对角线数据(预测正确的设置为0)
np.fill_diagonal(erro_matrix,0)
erro_matrix
array([[0.        , 0.        , 0.        , 0.        , 0.00704225,0.        , 0.0141844 , 0.        , 0.        , 0.        ],[0.        , 0.        , 0.        , 0.0212766 , 0.        ,0.        , 0.0212766 , 0.00666667, 0.01538462, 0.04929577],[0.        , 0.01298701, 0.        , 0.04255319, 0.        ,0.        , 0.0070922 , 0.        , 0.03846154, 0.        ],[0.        , 0.01298701, 0.01351351, 0.        , 0.        ,0.01351351, 0.        , 0.02666667, 0.00769231, 0.01408451],[0.        , 0.00649351, 0.        , 0.        , 0.        ,0.        , 0.        , 0.05333333, 0.01538462, 0.00704225],[0.        , 0.01298701, 0.        , 0.        , 0.00704225,0.        , 0.0070922 , 0.00666667, 0.00769231, 0.02816901],[0.        , 0.00649351, 0.        , 0.        , 0.        ,0.        , 0.        , 0.        , 0.        , 0.        ],[0.        , 0.        , 0.        , 0.        , 0.        ,0.        , 0.        , 0.        , 0.01538462, 0.        ],[0.        , 0.03246753, 0.00675676, 0.        , 0.        ,0.02027027, 0.0070922 , 0.        , 0.        , 0.02112676],[0.        , 0.01948052, 0.        , 0.0070922 , 0.        ,0.02027027, 0.        , 0.04666667, 0.00769231, 0.        ]])

越亮犯错越多
把真值1预测成了9…

#越亮犯错越多
#把真值1预测成了9..
plt.matshow(erro_matrix,cmap=plt.cm.gray)
#之后就可以微调分类器。。

Python机器学习:评价分类结果008多分类问题中的混淆矩阵相关推荐

  1. 【机器学习】二分类问题中的混淆矩阵、准确率、召回率等 (Python代码实现)

    文章目录 混淆矩阵 召回率与准确率 准确度Accuracy sklearn代码示例 混淆矩阵 混淆矩阵(Confusion Matrix):将分类问题按照真实情况与判别情况两个维度进行归类的一个矩阵, ...

  2. python逻辑回归训练预测_[Python] 机器学习笔记 基于逻辑回归的分类预测

    导学问题 什么是逻辑回归(一),逻辑回归的推导(二 3),损失函数的推导(二 4) 逻辑回归与SVM的异同 逻辑回归和SVM都用来做分类,都是基于回归的概念 SVM的处理方法是只考虑 support ...

  3. 机器学习中的混淆矩阵

    在我们的机器学习教程(前面的章节Python和NumPy的神经网络和神经网络从头开始),我们实现的各种算法,但是我们没有正确地测量输出的质量.主要原因是我们使用非常简单的小数据集来学习和测试.在Neu ...

  4. Python机器学习:梯度下降法008如何确定梯度计算的准确性,调试梯度下降法

    #调试梯度 import numpy as np import matplotlib.pyplot as pltnp.random.seed(666) X = np.random.random(siz ...

  5. Python机器学习:PCA与梯度上升:06scikit中的PCA

    首先引入相关的包,并且声称两个维度的向量,他们具有一定的关系 from sklearn.decomposition import PCA import numpy as np X = np.empty ...

  6. 《Python机器学习——预测分析核心算法》——2.2 分类问题:用声纳发现未爆炸的水雷...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.2节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  7. 2021-4月Python 机器学习——中文新闻文本标题分类

    试题说明 试题说明 任务描述 基于THUCNews数据集的文本分类, THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档,参赛者需要根据新闻 ...

  8. python分类预测_《Python机器学习——预测分析核心算法》——2.6 多类别分类问题:它属于哪种玻璃...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.6节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  9. 机器学习-------评价分类结果

    准确度的陷阱和混淆矩阵和精准率召回率 准确度的陷阱 准确度并不是越高说明模型越好,或者说准确度高不代表模型好,比如对于极度偏斜(skewed data)的数据,假如我们的模型只能显示一个结果A,但是1 ...

最新文章

  1. 关于Azure存储账户中存储虚拟机VHD文件的注意事项
  2. Epoll为我们带来了什么
  3. XamarinSQLite教程Xamarin.Android项目添加引用
  4. python3语法错误-python-使用Python 3打印时出现语法错误
  5. 疯狂ios讲义之网页控件(UIWebView)
  6. 大创idea2018-03-30
  7. 7.1.16 jQueray的鼠标事件
  8. 第九周(11.02-11.08)学习笔记
  9. Hexo博客:您备案的网站未指向阿里云国内节点(不含香港)服务器,备案号可能被取消接入
  10. 剑指offer:63-66记录
  11. java raw types,java – 为Raw Types抛出不一致的ClassCastException
  12. centos 6.5 安装谷歌浏览器Chrome
  13. http web 返回码概念
  14. 自己写的微信小程序炸金花简单版
  15. 数据结构---堆的相关操作
  16. 计算机硬盘与格式化,电脑硬盘能格式化吗
  17. Java基础知识(知识点)
  18. 很久以前某位大仙对petri网的总结
  19. nacos项目启动失败[NA] failed to request
  20. 如何将WPS转换成office,WPS转office的转换方法

热门文章

  1. 【codevs2460】【BZOJ1036】树的统计count,第一次的树链剖分
  2. 【BZOJ3223】文艺平衡树,Splay反转区间
  3. 【codevs1166】【noip07TG】矩阵取数游戏,新的开始
  4. 【codevs1039】01年noip TG--数的划分满分dp+愚蠢深搜+pas的奇怪做法
  5. linux 消息对lie_Linux系统编程—消息队列
  6. 【英语学习】【Level 08】U02 Movie Time L1 Let's talk about movies
  7. python里什么叫子图_Python中的两个子图(matplotlib)
  8. nginx源码分析之内存池实现原理
  9. CCS中的cmd命令文件
  10. Unity Shader: 优化GPU代码--用step()代替if else等条件语句。