我有四个类别,其类别标签列表如下所示。
classLabelList = [0, 1, 2, 3]
每个类别在下面的列表中具有特定的频率。
classFrequencyList = [150751, 79995, 65858, 69102]
类别 0
在数据中过度表示,而类别 2
的表示最少。现在我想计算一个权重向量,使得过度表示的类别具有较低的权重,而其他少数类别具有更高的权重。之后,我将把这个权重应用到我的分类交叉熵损失中。
有没有办法使用 sklearn
根据 classFrequencyList
找到权重向量呢?
回答:
你可以使用 sklearn.utils.class_weight.compute_class_weight
,只需确保 y
是样本的类别标签数组即可。
import sklearn class_weights = sklearn.utils.class_weight.compute_class_weight('balanced', classLabelList, y)