一种更不平衡的计算类权重方法

问题描述

我有一个大的多标签数组,数字在 0 到 65 之间。我使用以下代码生成类权重:

class_weights = class_weight.compute_class_weight('balanced',np.unique(labels),labels)

labels 数组是包含 0 到 65 之间数字的数组。

我使用它是为了适合带有 class_weight 标志的模型,原因是因为我有很多 "0" and "1" 示例但很少有 > 1 示例,我希望模型给出对计数较少的例子有更多的权重。这有很大帮助,但是,现在,我可以看到该模型对较少的示例给予了过多的重视,而忽略了最高计数 (1 and 0) 的示例。我正在尝试为此找到一种中间方法,希望得到一些关于如何继续下去的提示

解决方法

这可以通过两种方式实现,前提是您正确完成了权重分配,即为较少出现的标签赋予更多权重,反之亦然,这可能是您已经完成的。

  1. 将您的案例 0 and 1 中出现频率高的标签数量减少到带有其他标签的标签,前提是它不会将您的数据集减少到很大的幅度。但是,当其他出现次数较少的标签非常少并且您可以决定时,这通常是不可行的
  2. 其他最合理的解决方案是通过创建副本对出现次数较少的标签进行过采样,或者对出现次数最多的标签进行采样不足

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...