具有n_jobs = -1的sklearn Logistic回归实际上并不是并行化的

时间:2016-09-21 15:03:31

标签: python python-2.7 parallel-processing scikit-learn logistic-regression

我正在尝试使用sklearn的逻辑回归训练一个庞大的数据集。 我已经设置了参数n_jobs = -1(也尝试了n_jobs = 5,10,...),但是当我打开htop时,我可以看到它仍然只使用一个核心。

这是否意味着逻辑回归只是忽略了n_jobs参数?

我该如何解决这个问题?我真的需要这个过程变得并行化......

P.S。我正在使用sklearn 0.17.1

2 个答案:

答案 0 :(得分:1)

并行进程后端还取决于求解器方法。如果要使用多核,则需要multiprocessing后端。

但是像'sag'这样的求解器只能使用threading后端。

并且大多数情况下,由于大量的预处理,它可能会被阻止。

答案 1 :(得分:0)

仔细阅读他们的instructions有多种原因。 您可以尝试这组参数吗?

    logit = LogisticRegression(penalty='l2',
                       random_state=42,
                       C=0.2,
                       n_jobs=-1,
                       solver='sag',
                       multi_class='ovr',
                       max_iter=200,
                       verbose=10
                      )

启动多个线程需要一两分钟。