Python机器学习:评价分类结果008多分类问题中的混淆矩阵
多分类问题中的混淆矩阵
#十分类问题
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多分类问题中的混淆矩阵相关推荐
- 【机器学习】二分类问题中的混淆矩阵、准确率、召回率等 (Python代码实现)
文章目录 混淆矩阵 召回率与准确率 准确度Accuracy sklearn代码示例 混淆矩阵 混淆矩阵(Confusion Matrix):将分类问题按照真实情况与判别情况两个维度进行归类的一个矩阵, ...
- python逻辑回归训练预测_[Python] 机器学习笔记 基于逻辑回归的分类预测
导学问题 什么是逻辑回归(一),逻辑回归的推导(二 3),损失函数的推导(二 4) 逻辑回归与SVM的异同 逻辑回归和SVM都用来做分类,都是基于回归的概念 SVM的处理方法是只考虑 support ...
- 机器学习中的混淆矩阵
在我们的机器学习教程(前面的章节Python和NumPy的神经网络和神经网络从头开始),我们实现的各种算法,但是我们没有正确地测量输出的质量.主要原因是我们使用非常简单的小数据集来学习和测试.在Neu ...
- Python机器学习:梯度下降法008如何确定梯度计算的准确性,调试梯度下降法
#调试梯度 import numpy as np import matplotlib.pyplot as pltnp.random.seed(666) X = np.random.random(siz ...
- Python机器学习:PCA与梯度上升:06scikit中的PCA
首先引入相关的包,并且声称两个维度的向量,他们具有一定的关系 from sklearn.decomposition import PCA import numpy as np X = np.empty ...
- 《Python机器学习——预测分析核心算法》——2.2 分类问题:用声纳发现未爆炸的水雷...
本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.2节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...
- 2021-4月Python 机器学习——中文新闻文本标题分类
试题说明 试题说明 任务描述 基于THUCNews数据集的文本分类, THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档,参赛者需要根据新闻 ...
- python分类预测_《Python机器学习——预测分析核心算法》——2.6 多类别分类问题:它属于哪种玻璃...
本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.6节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...
- 机器学习-------评价分类结果
准确度的陷阱和混淆矩阵和精准率召回率 准确度的陷阱 准确度并不是越高说明模型越好,或者说准确度高不代表模型好,比如对于极度偏斜(skewed data)的数据,假如我们的模型只能显示一个结果A,但是1 ...
最新文章
- 关于Azure存储账户中存储虚拟机VHD文件的注意事项
- Epoll为我们带来了什么
- XamarinSQLite教程Xamarin.Android项目添加引用
- python3语法错误-python-使用Python 3打印时出现语法错误
- 疯狂ios讲义之网页控件(UIWebView)
- 大创idea2018-03-30
- 7.1.16 jQueray的鼠标事件
- 第九周(11.02-11.08)学习笔记
- Hexo博客:您备案的网站未指向阿里云国内节点(不含香港)服务器,备案号可能被取消接入
- 剑指offer:63-66记录
- java raw types,java – 为Raw Types抛出不一致的ClassCastException
- centos 6.5 安装谷歌浏览器Chrome
- http web 返回码概念
- 自己写的微信小程序炸金花简单版
- 数据结构---堆的相关操作
- 计算机硬盘与格式化,电脑硬盘能格式化吗
- Java基础知识(知识点)
- 很久以前某位大仙对petri网的总结
- nacos项目启动失败[NA] failed to request
- 如何将WPS转换成office,WPS转office的转换方法
热门文章
- 【codevs2460】【BZOJ1036】树的统计count,第一次的树链剖分
- 【BZOJ3223】文艺平衡树,Splay反转区间
- 【codevs1166】【noip07TG】矩阵取数游戏,新的开始
- 【codevs1039】01年noip TG--数的划分满分dp+愚蠢深搜+pas的奇怪做法
- linux 消息对lie_Linux系统编程—消息队列
- 【英语学习】【Level 08】U02 Movie Time L1 Let's talk about movies
- python里什么叫子图_Python中的两个子图(matplotlib)
- nginx源码分析之内存池实现原理
- CCS中的cmd命令文件
- Unity Shader: 优化GPU代码--用step()代替if else等条件语句。