mindspore.nn.Precision

class mindspore.nn.Precision(eval_type='classification')[source]

Calculates precision for classification and multilabel data.

The precision function creates two local variables, true_positive and false_positive, that are used to compute the precision. This value is ultimately returned as the precision, an idempotent operation that simply divides true_positive by the sum of true_positive and false_positive.

precision=true_positivetrue_positive+false_positive

Note

In the multi-label cases, the elements of y and ypred must be 0 or 1.

Parameters

eval_type (str) – ‘classification’ or ‘multilabel’ are supported. Default: ‘classification’.

Supported Platforms:

Ascend GPU CPU

Examples

>>> import numpy as np
>>> from mindspore import nn, Tensor
>>>
>>> x = Tensor(np.array([[0.2, 0.5], [0.3, 0.1], [0.9, 0.6]]))
>>> y = Tensor(np.array([1, 0, 1]))
>>> metric = nn.Precision('classification')
>>> metric.clear()
>>> metric.update(x, y)
>>> precision = metric.eval()
>>> print(precision)
[0.5 1. ]
clear()[source]

Clears the internal evaluation result.

eval(average=False)[source]

Computes the precision.

Parameters

average (bool) – Specify whether calculate the average precision. Default: False.

Returns

numpy.float64, the computed result.

update(*inputs)[source]

Updates the internal evaluation result with y_pred and y.

Parameters

inputs – Input y_pred and y. y_pred and y are Tensor, list or numpy.ndarray. For ‘classification’ evaluation type, y_pred is in most cases (not strictly) a list of floating numbers in range [0,1] and the shape is (N,C), where N is the number of cases and C is the number of categories. Shape of y can be (N,C) with values 0 and 1 if one-hot encoding is used or the shape is (N,) with integer values if index of category is used. For ‘multilabel’ evaluation type, y_pred and y can only be one-hot encoding with values 0 or 1. Indices with 1 indicate positive category. The shape of y_pred and y are both (N,C).

Raises

ValueError – If the number of inputs is not 2.