我在一个多核服务器上使用scikit-learn的RandomForestClassifier来适应大型数据集,所以我利用它的并行化特性设置了n_jobs = -1。
同时,我希望执行交叉验证(使用得分),并利用其并行化特性(同样,通过设置n_jobs = -1)。
我的问题是,使用这两种类型的并行化是否会显著提高模型构建的速度,而不是只使用一种类型的并行化。如果后者是正确的,那么我不确定我应该选择哪种类型的并行化。对于如何使这两种类型的并行化一起工作,科学工具包-学习文档等等并没有提供任何想法。
请让我知道,如果我可以提供更多的信息,我的设置,如果这将是有用的提供一个更有帮助的答案。谢谢!
发布于 2015-05-04 02:07:12
不,只使用一种类型的并行化。不可能嵌套joblib调用。我认为将使用最外层的循环,即cross_val_score,但我不确定。
实际上应该并行化的循环在一定程度上取决于设置。我可能会选择RandomForestClassifier(n_jobs=-1)并依次执行cross_val_score。使用一个冗长的GridSearchCV,它也将很快给您提供一些关于验证准确性的见解。
相反,您可以并行执行cross_val_score,与CPU相比,您有几个折叠(比如5倍和5个CPU)。通常,如果你搜索最大深度的话,一些森林的时间会比其他森林短得多。然后,快速森林将完成他们的工作,CPU将空闲,而“慢”森林将仍然是训练。
https://stackoverflow.com/questions/29904888
复制相似问题