confusion_matrix混淆矩阵的使用

混淆矩阵

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。 在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类相比较计算的。

1.简介

混淆矩阵(Confusion Matrix): 混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目:如下图,第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第一行第二列的2表示有2个实际归属为第一类的实例被错误预测为第二类。

2.举例

如有150个样本数据,预测为1,2,3类各为50个。分类结束后得到的混淆矩阵为: 每一行之和表示该类别的真实样本数量,每一列之和表示被预测为该类别的样本数量,第一行说明有43个属于第一类的样本被正确预测为了第一类,有两个属于第一类的样本被错误预测为了第二类

3.confusion_matrix函数的使用

def confusion_matrix(y_true, y_pred, labels=None, sample_weight=None):

y_true: 是样本真实分类结果,y_pred: 是样本预测分类结果 labels:是所给出的类别,通过这个可对类别进行选择 sample_weight : 样本权重

3.1实现例子1

from sklearn.metrics import confusion_matrix
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]
x = confusion_matrix(y_true, y_pred)
print(x)

结果:第一行第一列2表示标签为0,预测为0 有两个,第一行第二列0表示标签为0,把1预测为0的有0个。。。。依次类推。对角线之和就是预测对的数目。

3.2实现例子2

y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
a = confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])
print(a)

3.3实现例子3

我们通过样本的采集,能够直接知道真实情况下,哪些数据结果是positive,哪些结果是negative。同时,我们通过用样本数据跑出分类型模型的结果,也可以知道模型认为这些数据哪些是positive,哪些是negative。

因此,我们就能得到这样四个基础指标,我称他们是一级指标(最底层的):

1.真实值是positive,模型认为是positive的数量(True Positive=TP) 2.真实值是positive,模型认为是negative的数量(False Negative=FN):这就是统计学上的第一类错误(Type I Error) 3.真实值是negative,模型认为是positive的数量(False Positive=FP):这就是统计学上的第二类错误(Type II Error) 4.真实值是negative,模型认为是negative的数量(True Negative=TN) 将这四个指标一起呈现在表格中,就能得到如下这样一个矩阵,我们称它为混淆矩阵(Confusion Matrix):

from sklearn.metrics import confusion_matrix
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
print(tn, fp, fn, tp)

tn表示:真实值是negative,模型认为是negative的数量,可以看出我们的真实值有两个negative也就是0,模型任认为是negative的数量也为0,所以tn=0

fn表示;2.真实值是positive,模型认为是negative的数量,可以看出真实值有两个1,模型任认为是negative的数量也为一个0,所以fn=0

以此类推…

XL 2020年3月23日于重庆城口 好好学习,天天向上,终有所获

经验分享 程序员 微信小程序 职场和发展