我有一个包含不平衡类的数据集。三个类别约占数据的 60%。此外,我有不同的测试拆分会导致不平衡。例如:
训练集:label_1 ... label_n
测试集:label_1、label_3、label_9
这意味着即使我的测试集中只有 3 个标签,它也可能被预测为 n 个标签中的 1 个。因此,当我使用sklearn.metrics.precision_recall_fscore_support时,我得到一个包含很多零的矩阵。
我的问题是我需要获得所有班级的平均F 分数,而不是每个班级的值。然而,仅仅取从上述 sklearn 函数返回的矩阵的平均值总是一个非常低的值,因为有这么多的零。另一方面,对非零值取平均值对我来说也没有意义,因为潜在预测的总数应该是类的总数。
在这种情况下,有没有一种取平均值的好方法?我尝试过使用微观、宏观和加权平均选项,但我不确定哪一个是正确的。
谁能帮我解决这个问题?