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]] 的形式
- 参数:
input (Tensor) – 标签预测的二维张量,应为概率或 logits,形状为 (n_sample, n_class)。
target (Tensor) – 形状为 (n_samples,) 的真实标签的一维张量。
num_classes (int) – 类别数。
average (str, 可选) –
'macro'
[默认]分别计算每个类别的指标,并返回它们的未加权平均值。
None
或'none'
分别计算每个类别的指标,并返回每个类别的指标。
- 示例:
>>> 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])