我相信这可以通过修改RandomForestClassifier对象上的estimators_和n_estimators属性来实现。林中的每个树都存储为DecisionTreeClassifier对象,这些树的列表存储在estimators_属性中。为了确保不存在间断性,改变n_estimators中的估计数也是有意义的。
这种方法的优点是,您可以在多台机器上并行地构建一堆小森林,并将它们组合起来。
下面是一个使用iris数据集的示例:from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import train_test_split
from sklearn.datasets import load_iris
def generate_rf(X_train, y_train, X_test, y_test):
rf = RandomForestClassifier(n_estimators=5, min_samples_leaf=3)
rf.fit(X_train, y_train)
print "rf score ", rf.score(X_test, y_test)
return rf
def combine_rfs(rf_a, rf_b):
rf_a.estimators_ += rf_b.estimators_
rf_a.n_estimators = len(rf_a.estimators_)
return rf_a
iris = load_iris()
X, y = iris.data[:, [0,1,2]], iris.target
X_trai