依次拟合随机森林



我正在使用Sklearn在图像数据的语料库上训练Python中的随机森林分类器。因为我正在执行图像进行分割,所以我必须存储每个像素的数据,最终是一个巨大的矩阵,例如100,000,000个数据点矩阵,因此,当在该矩阵上运行RF分类器时,我的计算机会出现内存溢出错误,并永远需要奔跑。

我的一个想法是在数据集的顺序小批处理上训练分类器,因此最终对整个过程进行训练,但每次改善分类器的拟合度。这个想法可以起作用吗?每次运行时,拟合是否会覆盖最后一个拟合?

您可以使用 warm_start来预先计算树:

# First build 100 trees on X1, y1
clf = RandomForestClassifier(n_estimators=100, warm_start=True)
clf.fit(X1, y1)
# Build 100 additional trees on X2, y2
clf.set_params(n_estimators=200)
clf.fit(X2, y2)

替代

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
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.33)
# Create 'n' random forests classifiers
rf_clf = [generate_rf(X_train, y_train, X_test, y_test) for i in range(n)]
# combine classifiers
rf_clf_combined = reduce(combine_rfs, rfs)

相关内容

  • 没有找到相关文章

最新更新