Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 顺序拟合随机森林模型_Python_Machine Learning_Scikit Learn - Fatal编程技术网

Python 顺序拟合随机森林模型

Python 顺序拟合随机森林模型,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我正在用python在一个图像数据语料库上使用sklearn训练一个随机森林分类器。因为我要执行图像分割,所以我必须存储每个像素的数据,最终形成一个巨大的矩阵,比如100000000长的数据点矩阵,因此当在该矩阵上运行RF分类器时,我的计算机会出现内存溢出错误,并且永远无法运行 我的一个想法是在连续的小批量数据集上训练分类器,因此最终会对整个事情进行训练,但每次都会提高分类器的拟合度。这是一个可行的想法吗?拟合是否会在每次运行时覆盖上次拟合?您可以使用warm\u start来预计算树: # F

我正在用python在一个图像数据语料库上使用sklearn训练一个随机森林分类器。因为我要执行图像分割,所以我必须存储每个像素的数据,最终形成一个巨大的矩阵,比如100000000长的数据点矩阵,因此当在该矩阵上运行RF分类器时,我的计算机会出现内存溢出错误,并且永远无法运行


我的一个想法是在连续的小批量数据集上训练分类器,因此最终会对整个事情进行训练,但每次都会提高分类器的拟合度。这是一个可行的想法吗?拟合是否会在每次运行时覆盖上次拟合?

您可以使用
warm\u 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)

您是否尝试过将图像大小调整到较低的分辨率,即大幅减少每张图像的像素数?是的,我正在将图像的原始分辨率降低到100x100像素。我曾处理过一个类似的问题,RFs对图像块(大量图像)起作用。我在所有图像补丁的引导样本上分别构建了这些树(基本上,我可以在内存+空间中创建模型)。我把每棵树装好后都腌了。我有一个只适合一棵树的脚本,这样内存就被释放了(不是在一个脚本中适合一个循环中的所有内容)。安装完所有树后,我通过手动加载树来构建RF模型。@ChesterVonWinchester看起来确实很耗时,但听起来像是一个很好的黑客解决方法。这很有帮助!如果我使用warm_start,我可以将n_jobs=-1设置为并行拟合和预测吗?在一些文档中,它指出:“将
warm_start
构造参数设置为
True
将禁用对并行集成的支持,但对于在训练期间跟踪OOB错误轨迹是必需的。”