mindspore.train.Accuracy

class mindspore.train.Accuracy(eval_type='classification')[源代码]

计算数据分类的正确率,包括二分类和多分类。

此类创建两个局部变量,预测正确的样本数和总样本数,用于计算 y_predy 的匹配率。此匹配率即为accuracy。

\[\text{accuracy} =\frac{\text{true_positive} + \text{true_negative}} {\text{true_positive} + \text{true_negative} + \text{false_positive} + \text{false_negative}}\]
参数:
  • eval_type (str) - 评估的数据集的类型,支持 'classification''multilabel''classification' 为单标签分类场景, 'multilabel' 为多标签分类场景。 默认值: 'classification'

支持平台:

Ascend GPU CPU

样例:

>>> import numpy as np
>>> import mindspore
>>> from mindspore import Tensor
>>> from mindspore.train import Accuracy
>>>
>>> x = Tensor(np.array([[0.2, 0.5], [0.3, 0.1], [0.9, 0.6]]), mindspore.float32)
>>> y = Tensor(np.array([1, 0, 1]), mindspore.float32)
>>> metric = Accuracy('classification')
>>> metric.clear()
>>> metric.update(x, y)
>>> accuracy = metric.eval()
>>> print(accuracy)
0.6666666666666666
clear()[源代码]

内部评估结果清零。

eval()[源代码]

计算正确率。

返回:

np.float64,计算的正确率结果。

异常:
  • RuntimeError - 样本量为0。

update(*inputs)[源代码]

更新局部变量。计算预测值y_pred和标签y的匹配频率。 对于 'classification' ,如果预测的最大值的索引匹配真实的标签,预测正确;对于 'multilabel' ,如果预测值与真实标签匹配,预测正确。

参数:
  • inputs - 预测值 y_pred 和真实标签 yy_predy 支持Tensor、list或numpy.ndarray类型。

    • 对于 'classification' 情况, y_pred 在大多数情况下由范围 \([0, 1]\) 中的浮点数组成,shape为 \((N, C)\) ,其中 \(N\) 是样本数, \(C\) 是类别数。 y 由整数值组成,如果是one_hot编码格式,shape是 \((N, C)\) ;如果是类别索引,shape是 \((N,)\)

    • 对于 'multilabel' 情况, y_predy 只能是值为0或1的one-hot编码格式,其中值为1的索引表示正类别。 y_predy 的shape都是 \((N, C)\)

异常:
  • ValueError - inputs 的数量不等于2。

  • ValueError - 当前输入的 y_pred 和历史 y_pred 类别数不匹配。