pytorch Torchmetrics Multiclass F1评分结果与准确度相同

91zkwejq  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(102)

我尝试使用torchmetrics库的MetricTracker记录不平衡分类数据集的几个指标。我发现PrecisionRecallF1Score的结果总是等于Accuracy,尽管它不应该。
如何产生这种行为的最小示例如下所示:

import torch
import torchmetrics
from torchmetrics import MetricTracker, MetricCollection
from torchmetrics import Accuracy, F1Score, Precision, Recall, CohenKappa

num_classes = 3

list_of_metrics = [Accuracy(task="multiclass", num_classes=num_classes),
                   F1Score(task="multiclass", num_classes=num_classes),
                   Precision(task="multiclass",num_classes=num_classes),
                   Recall(task="multiclass",num_classes=num_classes),
                   CohenKappa(task="multiclass",num_classes=num_classes)
                   ]

maximize_list=[True,True,True,True,True]

metric_coll = MetricCollection(list_of_metrics)
tracker = MetricTracker(metric_coll, maximize=maximize_list)

pred = torch.Tensor([[0,.1,.5], # 2
                     [0,.1,.5],  # 2
                     [0,.1,.5],  # 2
                     [0,.1,.5],  # 2
                     [0,.1,.5],  # 2
                     [0.9,.1,.5]]) # 0

label = torch.Tensor([2,2,2,2,2,1])

tracker.increment()
tracker.update(pred, label)

for key, val in tracker.compute_all().items():
    print(key,val)

字符串
输出量:

MulticlassAccuracy tensor([0.8333])
MulticlassF1Score tensor([0.8333])
MulticlassPrecision tensor([0.8333])
MulticlassRecall tensor([0.8333])
MulticlassCohenKappa tensor([0.4545])


有人知道这里的问题是什么以及如何解决它吗?
我使用torchmetrics库的0.11.1版本。

643ylb08

643ylb081#

显然有一个documentation bug
解决办法是总是明确地说明你想要什么样的“平均值”。

相关问题