ana*_*nuc 3 random-forest scikit-learn
我正在使用 scikit-learn 随机森林来拟合训练数据(~30mb),但我的笔记本电脑不断崩溃,耗尽应用程序内存。测试数据比训练数据大几倍。使用 Macbook Air 2GHz 8GB 内存。
有哪些方法可以解决这个问题?
rf = RandomForestClassifier(n_estimators = 100, n_jobs=4)
print "20 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rf, X_train_a, y_train, cv=20, scoring='roc_auc'))
Run Code Online (Sandbox Code Playgroud)
你最好的选择是调整参数。
n_jobs=4
Run Code Online (Sandbox Code Playgroud)
这使得计算机同时计算四个训练测试周期。不同的 Python 作业在单独的进程中运行,因此也会复制完整的数据集。尝试减少n_jobs
到 2 或 1 以节省内存。n_jobs==4
使用内存n_jobs==1
使用量的四倍。
cv=20
Run Code Online (Sandbox Code Playgroud)
这会将数据分为 20 部分,并且代码执行 20 次训练测试迭代。这意味着训练数据是19条原始数据的大小。您可以非常安全地将其减少到 10,但是您的准确度估计可能会变得更糟。它不会节省太多内存,但会使运行时间更快。
n_estimators = 100
Run Code Online (Sandbox Code Playgroud)
减少这个值将节省很少的内存,但它会使算法运行得更快,因为随机森林将包含更少的树。
总而言之,我建议减少n_jobs
到 2 以节省内存(运行时间增加 2 倍)。为了补偿运行时间,我建议更改cv
为 10(运行时间节省 2 倍)。如果这没有帮助,请更改n_jobs
为 1,并将估计器的数量减少到 50(处理速度提高两倍)。
归档时间: |
|
查看次数: |
5227 次 |
最近记录: |