scikit-learn:随机森林class_weight和sample_weight参数

时间:2015-06-12 14:12:08

标签: python scikit-learn

我有类不平衡问题,并且正在使用scikit-learn(> = 0.16)中的实现来尝试加权随机森林。

我注意到实现在树构造函数中使用 class_weight 参数,在fit方法中使用 sample_weight 参数来帮助解决类不平衡问题。这两个似乎成倍增加,以决定最终的重量。

我无法理解以下内容:

  • 在树木构建/训练/预测的哪些阶段使用了这些权重?我看过一些关于加权树的论文,但我不确定scikit是什么实现的。
  • class_weight和sample_weight之间究竟有什么区别?

1 个答案:

答案 0 :(得分:15)

RandomForests建立在树上,有很好的文档记录。检查树如何使用样本权重:

至于class_weightsample_weight之间的区别:很多可以通过其数据类型的性质来确定。 sample_weight是长度为n_samples的一维数组,为每个用于训练的示例分配显式权重。 class_weight可以是每个类的字典,也可以是该类的统一权重(例如{1:.9, 2:.5, 3:.01}),或者是告诉sklearn如何自动确定该字典的字符串。

因此,给定示例的训练权重是明确命名为sample_weight(如果未提供1则为sample_weight)的产物,并且为class_weight(或如果未提供1,则class_weight