torcheval.metrics.functional.multiclass_auprc¶
- torcheval.metrics.functional.multiclass_auprc(input: Tensor, target: Tensor, num_classes: int | None = None, *, average: str | None = 'macro') Tensor¶
计算AUPRC,也称为平均精度,它是多类分类中精确率-召回率曲线下的面积。 其类版本是
torcheval.metrics.MulticlassAUPRC。精确率定义为 \(\frac{T_p}{T_p+F_p}\),它是模型预测为正例的样本中真正为正例的概率。 召回率定义为 \(\frac{T_p}{T_p+F_n}\),它是真正为正例的样本被模型预测为正例的概率。
精确率-召回率曲线在x轴上绘制召回率,在y轴上绘制精确率,两者都在0和1之间。此函数返回该曲线下的面积。如果面积接近1,模型支持一个阈值,该阈值能够正确识别高比例的真阳性,同时拒绝足够的假例,使得大多数真实预测都是真阳性。
在多类版本的auprc中,目标张量是一维的,并且包含一个整数条目,表示输入张量中每个示例的类别。每个类别都以一对多的方式独立考虑,该类别的示例被标记为条件真,所有其他类别被视为条件假。
如果不进行平均,N类多类auprc的结果等同于具有N个任务的二元auprc,如果:
输入被转置,在二分类中样本与列相关联,而在多分类中样本与行相关联。
目标 target 从形式 [1,0,1] 转换为形式 [[0,1,0], [1,0,1]]
- Parameters:
input (Tensor) – 标签预测的二维张量 它应该是形状为 (n_sample, n_class) 的概率或对数几率。
target (Tensor) – 形状为 (n_samples, ) 的真实标签的一维张量。
num_classes (int) – 类别数量。
average (str, optional) –
'macro'[默认]:分别计算每个类别的指标,并返回它们的未加权平均值。
None或'none':分别计算每个类别的指标,并返回每个类别的指标。
- Examples::
>>> import torch >>> from torcheval.metrics.functional import multiclass_auprc >>> input = tensor([[0.5647, 0.2726], [0.9143, 0.1895], [0.7782, 0.3082]]) >>> target = tensor([0, 1, 0]) >>> multiclass_auprc(input, target, average=None) tensor([0.5833, 0.3333]) >>> multiclass_auprc(input, target) tensor(0.4583)
>>> input = torch.tensor([[0.1, 1], [0.5, 1], [0.7, 1], [0.8, 0]]) >>> target = torch.tensor([1, 0, 0, 1]) >>> multiclass_auprc(input, target, 2, average=None) tensor([0.5833, 0.4167])
与二进制的连接 >>> from torcheval.metrics.functional import binary_auprc >>> input = torch.tensor([[0.1, 0.5, 0.7, 0.8], >>> [1, 1, 1, 0]]) >>> target = torch.tensor([[0, 1, 1, 0], >>> [1, 0, 0, 1]]) >>> binary_auprc(input, target, num_tasks=2) tensor([0.5833, 0.4167])