mindspore.nn.ROC
- class mindspore.nn.ROC(class_num=None, pos_label=None)[源代码]
计算ROC曲线。适用于求解二分类和多分类问题。在多分类的情况下,将基于one-vs-the-rest的方法进行计算。
- 参数:
class_num (int) - 类别数。对于二分类问题,此入参可以不设置。默认值:None。
pos_label (int) - 正类的类别值。二分类问题中,不设置此入参,即 pos_label 为None时,正类类别值默认为1;用户可以自行设置正类类别值为其他值。多分类问题中,用户不应设置此参数,因为它将在[0,num_classes-1]范围内迭代更改。默认值:None。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import numpy as np >>> from mindspore import nn, Tensor >>> >>> # 1) binary classification example >>> x = Tensor(np.array([3, 1, 4, 2])) >>> y = Tensor(np.array([0, 1, 2, 3])) >>> metric = nn.ROC(pos_label=2) >>> metric.clear() >>> metric.update(x, y) >>> fpr, tpr, thresholds = metric.eval() >>> print(fpr) [0. 0. 0.33333333 0.6666667 1.] >>> print(tpr) [0. 1. 1. 1. 1.] >>> print(thresholds) [5 4 3 2 1] >>> >>> # 2) multiclass classification example >>> x = Tensor(np.array([[0.28, 0.55, 0.15, 0.05], [0.10, 0.20, 0.05, 0.05], [0.20, 0.05, 0.15, 0.05], ... [0.05, 0.05, 0.05, 0.75]])) >>> y = Tensor(np.array([0, 1, 2, 3])) >>> metric = nn.ROC(class_num=4) >>> metric.clear() >>> metric.update(x, y) >>> fpr, tpr, thresholds = metric.eval() >>> print(fpr) [array([0., 0., 0.33333333, 0.66666667, 1.]), array([0., 0.33333333, 0.33333333, 1.]), array([0., 0.33333333, 1.]), array([0., 0., 1.])] >>> print(tpr) [array([0., 1., 1., 1., 1.]), array([0., 0., 1., 1.]), array([0., 1., 1.]), array([0., 1., 1.])] >>> print(thresholds) [array([1.28, 0.28, 0.2, 0.1, 0.05]), array([1.55, 0.55, 0.2, 0.05]), array([1.15, 0.15, 0.05]), array([1.75, 0.75, 0.05])]
- eval()[源代码]
计算ROC曲线。
- 返回:
tuple,由 fpr、tpr 和 thresholds 组成。
fpr (np.array) - 假正率。二分类情况下,返回不同阈值下的fpr;多分类情况下,则为fpr(false positive rate)的列表,列表的每个元素代表一个类别。
tps (np.array) - 真正率。二分类情况下,返回不同阈值下的tps;多分类情况下,则为tps(true positive rate)的列表,列表的每个元素代表一个类别。
thresholds (np.array) - 用于计算假正率和真正率的阈值。
- 异常:
RuntimeError - 如果没有先调用update方法,则会报错。