【问题标题】:Balanced Random Forest in scikit-learn (python)scikit-learn(python)中的平衡随机森林
【发布时间】:2017-03-26 17:09:32
【问题描述】:

我想知道最近版本的 scikit-learn 包中是否有平衡随机森林 (BRF) 的实现。 BRF 用于数据不平衡的情况。它与普通 RF 一样工作,但对于每次引导迭代,它通过欠采样来平衡流行类。例如,给定两个类 N0 = 100 和 N1 = 30 个实例,在每次随机抽样时,它从第一类抽取(替换)30 个实例,从第二类抽取相同数量的实例,即它在平衡数据集。欲了解更多信息please refer to this paper

RandomForestClassifier() 确实有 'class_weight=' 参数,它可能设置为 'balanced',但我不确定它是否与自举训练样本的下采样有关。

【问题讨论】:

  • 我们正在努力。 imblearn 目前是一个很好的解决方案。

标签: scikit-learn classification random-forest


【解决方案1】:

您要查找的是来自imblearnBalancedBaggingClassifier

imblearn.ensemble.BalancedBaggingClassifier(base_estimator=None,
 n_estimators=10, max_samples=1.0, max_features=1.0, bootstrap=True,
 bootstrap_features=False, oob_score=False, warm_start=False, ratio='auto',
 replacement=False, n_jobs=1, random_state=None, verbose=0)

实际上,它允许您做的是连续对多数类进行欠采样,同时在顶部安装一个估计器。您可以使用随机森林或 scikit-learn 中的任何基本估计器。这是example

【讨论】:

    【解决方案2】:

    现在 imblearn 中有一个名为 BalancedRandomForestClassifier 的类。它的工作原理类似于前面提到的 BalancedBaggingClassifier,但专门用于随机森林。

    from imblearn.ensemble import BalancedRandomForestClassifier
    brf = BalancedRandomForestClassifier(n_estimators=100, random_state=0)
    brf.fit(X_train, y_train)
    y_pred = brf.predict(X_test)
    

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 2015-03-28
      • 2013-04-26
      • 2016-05-18
      • 2016-06-22
      • 2018-06-05
      • 2015-09-16
      • 2017-03-01
      • 2012-03-10
      相关资源
      最近更新 更多