阅读(3171) (10)

TensorFlow如何计算混淆矩阵

2017-09-14 15:45:26 更新

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, 并且其形状与预测不匹配.