首页 文章

使用scikit-learn进行多级并行化

提问于
浏览
2

我在多核服务器上使用scikit-learn的RandomForestClassifier以适应大型数据集,因此我通过设置 n_jobs = -1 来利用其并行化功能 .

同时,我想执行交叉验证(使用cross_val_score)并使用其并行化功能(同样,通过设置 n_jobs = -1 ) .

我的问题是,使用两种类型的并行化是否会显着提高模型构建的速度,而不仅仅是使用单一类型的并行化 . 如果后者是真的,那么我不确定我应该选择哪种类型的并行化 . scikit-learn文档和SO没有提供关于如何使两种类型的并行化协同工作的任何想法 .

如果我能为您提供有关我的设置的更多信息,请告诉我是否有助于提供更有帮助的答案 . 谢谢!

1 回答

  • 2

    不,只使用一种类型的并行化 . 无法嵌套joblib调用 . 我认为最外层的循环将被使用,即 cross_val_score 但我不确定 .

    您应该实际并行化的哪个循环取决于您的设置 . 我可能会去RandomForestClassifier(n_jobs = -1)并按顺序执行cross_val_score . 使用详细的GridSearchCV,它还可以非常快速地为您提供有关验证准确性的一些见解 .

    相反,你可以并行执行cross_val_score,与CPU相比,你可以折叠很少(比如5倍和5个CPU) . 通常,如果您搜索最大深度,某些森林将比其他森林花费更短的时间 . 然后快速森林将完成他们的工作,CPU将闲置,而“慢”森林仍将训练 .

相关问题