【问题标题】:sklearn Logistic Regression with n_jobs=-1 doesn't actually parallelizesklearn Logistic Regression with n_jobs=-1 实际上并没有并行化
【发布时间】:2017-01-29 22:02:31
【问题描述】:

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

是不是说逻辑回归只是忽略了 n_jobs 参数?

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

附:我正在使用 sklearn 0.17.1

【问题讨论】:

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


    【解决方案1】:

    并行进程后端也依赖于求解器方法。如果您想使用多核,则需要multiprocessing 后端。

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

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

    【讨论】:

    • 如果您能用一个在 sklearn 上使用 n_jobs 的工作示例进行说明,那就太好了
    【解决方案2】:

    如果您仔细阅读他们的instructions,有多种原因。 可以试试这组参数吗:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2020-03-07
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      相关资源
      最近更新 更多