如何处理 sklearn 随机森林中的类不平衡。我应该使用样本权重还是类权重参数

NG_*_*_21 5 python random-forest scikit-learn supervised-learning

我正在尝试解决类不平衡的二元分类问题。我有一个包含 210,000 条记录的数据集,其中92%0s8%1s。我使用sklearn (v 0.16)pythonrandom forests

我看到有两个参数sample_weight,并class_weight 在构造分类。我目前正在使用参数class_weight="auto"

我正确使用它吗?class_weight 和 sample weight 实际做什么,我应该使用什么?

Dav*_*ust 3

班级权重是您应该使用的。

样本权重允许您指定特定样本影响的乘数。使用权重 2.0 对样本进行加权大致具有相同的效果,就像该点在数据中出现两次一样(尽管确切的效果取决于估计器)。

类别权重具有相同的效果,但它用于将一组乘数应用于属于指定类别的每个样本。就功能而言,您可以使用其中任何一种,但这样class_weights做是为了方便,因此您不必手动对每个样品进行称重。也可以将两者的使用结合起来,其中类别权重乘以样本权重。

sample_weights该方法的主要用途之一fit()是允许增强元算法,例如AdaBoostClassifier对现有决策树分类器进行操作,并根据算法的需要增加或减少单个样本的权重。