TensorFlow如何计算混淆矩阵
2018-09-14 16:08 更新
tf.confusion_matrix
confusion_matrix(
labels,
predictions,
num_classes=None,
dtype=tf.int32,
name=None,
weights=None
)
定义在:tensorflow/python/ops/confusion_matrix.py.
从预测和标签计算混淆矩阵.
计算一对预测和标签的 1维 int 数组的混淆矩阵.
矩阵的列表示预测标签,行表示实际标签.混淆矩阵总是形状 [n, n] 的一个二维数组,其中 n 是给定分类任务的有效标签的数量.预测和标签都必须是相同形状的 1维数组,以使此函数正常工作.
如果 num_classes 为 None,则 num_classes 将被设置为一个加上预测值或标签中的最大值.类标签预计从0开始.例如, 如果 num_classes 是三个,那么可能的标签将是 [0, 1, 2].
如果权重不是 None,则每个预测都会对混淆矩阵单元的总值做出相应的权重.
例如:
tf.contrib.metrics.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:用于分类任务的实际标签的 1维张量 .
- predictions:给定分类的 1维预测的张量.
- num_classes:分类任务可能具有的标签数量.如果未提供此值,则将使用预测和标签数组计算它.
- dtype:混淆矩阵的数据类型.
- name:作用域名称.
- weights:一个形状匹配预测的可选张量.
返回:
表示混淆矩阵的 k X k 矩阵, 其中 k 是分类任务中可能的标签数.
注意:
- ValueError:如果预测和标签都不是1维向量, 且形状不匹配, 或者权重不是 None, 并且其形状与预测不匹配.