tf 矩阵行和列交换_混淆矩阵tf.math.confusion_matrix

混淆矩阵是评估分类系统性能的工具,显示了真实标签与预测标签的对比。tf.math.confusion_matrix函数计算混淆矩阵,参数包括真实标签、预测标签和可选的类别数。正确预测位于对角线,非对角线元素表示分类错误。
摘要由CSDN通过智能技术生成

二维矩阵每一列预测标签中的数字代表该类别预测值,每一行真实标签中的数字的总和代表的是该类别的真实总数量。

假设有一个用来对猫cat、狗dog、兔子rabbit进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。

假设总共有 27 只动物:8只猫, 6条狗, 13只兔子。结果的混淆矩阵如上图,在这个混淆矩阵中:

第一行猫类别实际真实有8只,但是分类系统将其中3只预测成了狗;

第二行狗类别实际真实有6只,但是分类系统将其中1只预测成了兔子,2只预测成了猫;

第三行兔子类别实际真实有13只,但是分类系统将其中2只预测成了狗;

从混淆矩阵中我们可以看出分类系统对于区分猫、狗存在一些问题,但是区分兔子的效果还算可以的。

分类系统所有正确的预测结果都在从左上角到右下角的斜对角线上,所以从混淆矩阵中可以很方便直观的看出预测哪里有错误。

监督学习:混淆矩阵

confusion_matrix(labels, predictions, num_classes=None, weights=None, dtype=tf.int32, name=None)

根据真实标签labels和预测标签predictions计算混淆矩阵。

矩阵的列表示预测标签predictions,矩阵的行表示真实标签labels。

混淆矩阵总是一个二维的形状数组[n,n],其中n是给定分类任务的有效标签数。

预测标签predictions和真实标签labels必须是相同形状的一维数组,才能使此函数工作。

如果num_classes是None,那么num_classes将被设置为一个加上预测标签predictions或真实标签labels中的最大值。

类别标签应该从0开始。例如,如果num_classes是3,那么可能的标签是[0,1,2]。

如果weights不是None,则每个预测将其相应的权重贡献给混淆矩阵单元的总值。

例子:

tf.math.confusion_matrix([1, 2, 4], [2, 2, 4])

[[0 0 0 0 0]

[0 0 1 0 0]

[0 0 1 0 0]

[0 0 0 0 0]

[0 0 0 0 1]]

注意,可能的标签假定为[0,1,2,3,4],产生5x5混淆矩阵。

Args:

labels: 用于分类任务的真实标签的一维张量。

predictions: 给定分类的一维预测张量。

num_classes: 分类任务可能具有的标签数。如果未提供此值,则将使用预测和标签数组计算该值。

weights: 形状与预测相符的可选张量

dtype: 混淆矩阵的数据类型

name: 作用域名称

Returns:

dtype类型的张量,其形状为[n,n]表示混淆矩阵,其中n是分类任务中可能的标签数目。

Raises:

ValueError:如果预测和标签都不是一维向量且形状不匹配,或者如果权重不是None且其形状与预测不匹配。

>>> import tensorflow as tf

>>> tf.math.confusion_matrix([1, 2, 4], [2, 2, 4]) #假设可能的标签是[0, 1, 2, 3, 4],导致5x5混淆矩阵。

array([[0, 0, 0, 0, 0],

[0, 0, 1, 0, 0],

[0, 0, 1, 0, 0],

[0, 0, 0, 0, 0],

[0, 0, 0, 0, 1]])>

>>> tf.math.confusion_matrix([1, 2, 4], [2, 2, 4], num_classes=5)

array([[0, 0, 0, 0, 0],

[0, 0, 1, 0, 0],

[0, 0, 1, 0, 0],

[0, 0, 0, 0, 0],

[0, 0, 0, 0, 1]])>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值