计算不平衡班级的班级权重

时间:2019-04-26 13:49:08

标签: machine-learning scikit-learn neural-network deep-learning multiclass-classification

我正在尝试自己实现“ 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之间。 使用这种分类砝码安全吗?这样巨大的罚款有可能破坏我的网络吗?

0 个答案:

没有答案