混淆矩阵

python数据分析与挖掘实战---基于水色图像的水质评价

匿名 (未验证) 提交于 2019-12-02 22:51:30
抽取80%作为训练样本,剩下20%作为测试样本 此案例是《python数据分析与数据挖掘》的第九章,在p200我们可以看到特征的取值范围都在0~1之间,换句话说,如果我们直接输入SVM模型的话,彼此之间的区分度会比较小,因此我们需要做一个放大处理,当然放大系数K不能过大或者过小,经反复试验,我们发现30时,效果比较好。 代码如下: import pandas as pd inputfile ='chapter9/demo/ data /moment.csv' data =pd.read_csv ( inputfile , encoding =' gbk' ) #读取数据,指定编码 data = data .as_matrix () from random import shuffle #引入随机函数 ## shuffle(data) #随机打乱数据 **这样直接写有问题** #用下面的方式 num_example = data .shape[0] print (num_example) arr =np.arange(num_example) np .random.shuffle(arr) data = data [arr] data_train = data [:int (0.8* len ( data ) ),:] #选取前80%为训练数据 data_test = data

python画混淆矩阵(confusion matrix)

匿名 (未验证) 提交于 2019-12-02 22:51:30
混淆矩阵(Confusion Matrix),是一种在深度学习中常用的辅助工具,可以让你直观地了解你的模型在哪一类样本里面表现得不是很好。 如上图,我们就可以看到,有一个样本原本是0的,却被预测成了1,还有一个,原本是2的,却被预测成了0。 简单介绍作用后,下面上代码: import seaborn as sns from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt 导入需要的包,如果有一些包没有,pip一下就可以了。 sns.set() f,ax=plt.subplots() y_true = [0,0,1,2,1,2,0,2,2,0,1,1] y_pred = [1,0,1,2,1,0,0,2,2,0,1,1] C2= confusion_matrix(y_true, y_pred, labels=[0, 1, 2]) print(C2) #打印出来看看 sns.heatmap(C2,annot=True,ax=ax) #画热力图 ax.set_title('confusion matrix') #标题 ax.set_xlabel('predict') #x轴 ax.set_ylabel('true') #y轴 下面就是结果: 来源:博客园 作者: YexiongLin 链接

混淆矩阵(Confusion Matrix)

穿精又带淫゛_ 提交于 2019-12-02 08:08:57
简介 混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。 一句话解释版本: 混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来。这个表就是混淆矩阵。 数据分析与挖掘体系位置 混淆矩阵是评判模型结果的指标,属于模型评估的一部分。此外,混淆矩阵多用于判断分类器(Classifier)的优劣,适用于分类型的数据模型,如分类树(Classification Tree)、逻辑回归(Logistic Regression)、线性判别分析(Linear Discriminant Analysis)等方法。 在分类型模型评判的指标中,常见的方法有如下三种: 混淆矩阵(也称误差矩阵,Confusion Matrix) ROC曲线 AUC面积 本篇主要介绍第一种方法,即混淆矩阵,也称误差矩阵。 此方法在整个数据分析与挖掘体系中的位置如下图所示。 混淆矩阵的定义 混淆矩阵的定义 混淆矩阵(Confusion Matrix),它的本质远没有它的名字听上去那么拉风。矩阵,可以理解为就是一张表格,混淆矩阵其实就是一张表格而已。 以分类模型中最简单的二分类为例,对于这种问题,我们的模型最终需要判断样本的结果是0还是1,或者说是positive还是negative。 我们通过样本的采集,能够直接知道真实情况下

ROC曲线、KS曲线

匆匆过客 提交于 2019-12-01 15:27:54
一、ROC曲线 ROC曲线由混淆矩阵为基础数据生成。 纵坐标:真阳性率TPR,预测为正占真正为正的比例。 横坐标:假阳性率FPR,预测为正占真正为负的比例。 如何根据数据画出ROC曲线? 设定不同的cutoff值,针对每个cutoff值计算混淆矩阵,求出对应的横纵坐标,做图。 二、KS曲线 累计坏样本比例-累计好样本比例 来源: https://www.cnblogs.com/ironan-liu/p/11690674.html

Python绘制混淆矩阵,汉字显示label

孤人 提交于 2019-12-01 09:39:15
1. 在计算出混淆矩阵之后,想自己绘制图形(并且在图形上显示汉字),可用 #coding=utf-8 import matplotlib.pyplot as plt import numpy as np confusion = np.array(([91,0,0],[0,92,1],[0,0,95])) # 热度图,后面是指定的颜色块,可设置其他的不同颜色 plt.imshow(confusion, cmap=plt.cm.Blues) # ticks 坐标轴的坐标点 # label 坐标轴标签说明 indices = range(len(confusion)) # 第一个是迭代对象,表示坐标的显示顺序,第二个参数是坐标轴显示列表 #plt.xticks(indices, [0, 1, 2]) #plt.yticks(indices, [0, 1, 2]) plt.xticks(indices, ['圆形', '三角形', '方形']) plt.yticks(indices, ['圆形', '三角形', '方形']) plt.colorbar() plt.xlabel('预测值') plt.ylabel('真实值') plt.title('混淆矩阵') # plt.rcParams两行是用于解决标签不能显示汉字的问题 plt.rcParams['font.sans-serif']=

7.评价分类结果

本小妞迷上赌 提交于 2019-11-29 12:34:30
1.准确度的陷阱和混淆矩阵 我们之前对于分类问题,一直使用分类的准确度评价分类的结果,但是实际上分类问题的评价比回归问题的评价要复杂很多,相应的指标也多很多。可是之前使用准确度来进行评价不是挺好吗?但其实准确度是有一个很大的问题的,举个例子 我有一个癌症检测系统,通过对人进行体检,那么可以判断这个人是否患有癌症,而这个系统预测的准确度是99%,那么这个系统是好,还是坏呢?按照我们之前的逻辑,准确度都达到99%了,那么肯定是一个好系统了,其实不然。如果这个癌症的发病率只有百分之1呢,换句话说,1000个人里面只有10个癌症患者,健康的人远远高于患有癌症的人。那么不管什么人,系统只要都预测成健康,或者没有患有癌症,那么这个系统的准确度依然能达到99%,也就是说这个系统甚至都不需要机器学习,不管来什么人,只要都预测成健康就可以了,因为健康的人相对于患有癌症的人,比例显然是远远高于的。因此只要都预测成健康,那么准确度依旧会很高,但是这样的系统有用吗?我们的目的是,希望能够检测出来患有癌症的人,尽管这个系统的准确度达到了99%,但是癌症患者是不是一个都没有检测出来啊,所以这便是分类准确度的一个陷阱,或者说一个弊端,那么我们便有了其他的评价指标。所以我们说分类问题的评价指标相较于回归问题,要更复杂一些,毕竟回归问题只要判断误差的大小、或者r2的大小即可 或者我们的例子再举的极端一点

混淆矩阵 python实现

不想你离开。 提交于 2019-11-29 08:37:18
Summary 涉及到分类问题,我们经常需要通过可视化混淆矩阵来分析实验结果进而得出调参思路,本文介绍如何利用python绘制混淆矩阵(confusion_matrix),本文只提供代码,给出必要注释。 Code​ # -*-coding:utf-8-*- from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt import numpy as np #labels表示你不同类别的代号,比如这里的demo中有13个类别 labels = ['A', 'B', 'C', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] ''' 具体解释一下re_label.txt和pr_label.txt这两个文件,比如你有100个样本 去做预测,这100个样本中一共有10类,那么首先这100个样本的真实label你一定 是知道的,一共有10个类别,用[0,9]表示,则re_label.txt文件中应该有100 个数字,第n个数字代表的是第n个样本的真实label(100个样本自然就有100个 数字)。 同理,pr_label.txt里面也应该有1--个数字,第n个数字代表的是第n个样本经过 你训练好的网络预测出来的预测label。 这样,re_label

机器学习之分类

只愿长相守 提交于 2019-11-26 13:47:25
本次使用的数据集是比较经典的mnist数据集。它有着 70000 张规格较小的手写数字图片,由美国的高中生和美国人口调查局的职员手写而成。这相当于机器学习当中的“Hello World”,人们无论什么时候提出一个新的分类算法,都想知道该算法在这个数据集上的表现如何。机器学习的初学者迟早也会处理 MNIST 这个数据集。接下来就是进行数据集的读取工作。 加载数据 机器学习的初学者迟早会接触Minist这个数据集,sklearn提供很多辅助函数用于下载流行的数据集 fetch_mldata 出错修改方式 下载文件 https://github.com/amplab/datascience-sp14/raw/master/lab7/mldata/mnist-original.mat 创建一个文件夹:datasets或mldata,将下载好的mnist-original.mat文件放在这个文件夹之中。 fetch_mldata('MNIST original', data_home="datasets"),data_home参数即为从本地导入数据的地址。 from sklearn.datasets import fetch_mldata mnist = fetch_mldata('MNIST original', data_home="sample_data") mnist X, y =