主要问题:如何在python和scikit-learn中结合不同的randomForests?

我目前正在R中使用randomForest包,通过弹性贴图缩减来生成randomforest对象。这是为了解决分类问题。

由于我的输入数据太大而无法容纳在一台机器上的内存中,因此我将数据采样到较小的数据集中,并生成包含较小树集的随机森林对象。然后,我使用修改后的Combine函数将不同的树合并在一起,以创建一个新的随机森林对象。该随机森林对象包含特征重要性和最后的树集。这不包括oob错误或树木的票数。

虽然这在R中很好用,但我想使用scikit-learn在Python中做同样的事情。我可以创建不同的随机森林对象,但是没有任何方法可以将它们组合在一起以形成一个新对象。谁能指出我可以结合森林的功能?可以使用scikit-learn吗?

这是有关在R:Combining random forests built with different training sets in R中如何执行此过程的问题的链接。

编辑:生成的随机森林对象应包含可用于预测的树以及特征重要性。

任何帮助,将不胜感激。

最佳答案

当然,只需汇总所有树木,例如,从pyrallel看一下此片段:

def combine(all_ensembles):
    """Combine the sub-estimators of a group of ensembles

        >>> from sklearn.datasets import load_iris
        >>> from sklearn.ensemble import ExtraTreesClassifier
        >>> iris = load_iris()
        >>> X, y = iris.data, iris.target

        >>> all_ensembles = [ExtraTreesClassifier(n_estimators=4).fit(X, y)
        ...                  for i in range(3)]
        >>> big = combine(all_ensembles)
        >>> len(big.estimators_)
        12
        >>> big.n_estimators
        12
        >>> big.score(X, y)
        1.0

    """
    final_ensemble = copy(all_ensembles[0])
    final_ensemble.estimators_ = []

    for ensemble in all_ensembles:
        final_ensemble.estimators_ += ensemble.estimators_

    # Required in old versions of sklearn
    final_ensemble.n_estimators = len(final_ensemble.estimators_)

    return final_ensemble

关于python - 使用scikit-learn并行生成随机森林,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25914320/

10-12 17:40