我正在尝试自己实现“ sklearn.utils.class_weight”的“ compute_class_weight”。我对此有一些疑问。 我正在尝试的实现:
classes = ['a','b','c','d']
for cls in classes:
instamceCountDict[cls] = getCount(cls)
majority = max(instanceCountDict.values())
for cls in classes:
classWeight[cls] = round(majority / classCountDict[cls],2)
我在互联网上找到的实现:
classes = ['a','b','c','d']
totalSamples = 0
for cls in classes:
instamceCountDict[cls] = getCount(cls)
totalSamples += instanceCountDict[cls]
mu = 0.15 #this can be varied
for cls in classes:
score = math.log(mu * totalSamples / float(instanceCountDict[cls]))
classWeight[cls] = score if score > 1.0 else 1.0
我的问题是,哪种方法是正确的方法,或者哪种方法更有效?在第一种方法中,对于严重不足的班级,我得到了巨大的班级权重,其中一些在300-400之间。 使用这种分类砝码安全吗?这样巨大的罚款有可能破坏我的网络吗?