我有类不平衡问题,并且正在使用scikit-learn(> = 0.16)中的实现来尝试加权随机森林。
我注意到实现在树构造函数中使用 class_weight 参数,在fit方法中使用 sample_weight 参数来帮助解决类不平衡问题。这两个似乎成倍增加,以决定最终的重量。
我无法理解以下内容:
答案 0 :(得分:15)
RandomForests建立在树上,有很好的文档记录。检查树如何使用样本权重:
至于class_weight
和sample_weight
之间的区别:很多可以通过其数据类型的性质来确定。 sample_weight
是长度为n_samples
的一维数组,为每个用于训练的示例分配显式权重。 class_weight
可以是每个类的字典,也可以是该类的统一权重(例如{1:.9, 2:.5, 3:.01}
),或者是告诉sklearn如何自动确定该字典的字符串。
因此,给定示例的训练权重是明确命名为sample_weight
(如果未提供1
则为sample_weight
)的产物,并且为class_weight
(或如果未提供1
,则class_weight
。