sklearn Logistic Regression with n_jobs=-1 实际上并没有并行化
Posted
技术标签:
【中文标题】sklearn Logistic Regression with n_jobs=-1 实际上并没有并行化【英文标题】:sklearn Logistic Regression with n_jobs=-1 doesn't actually parallelize 【发布时间】:2017-01-29 22:02:31 【问题描述】:我正在尝试使用 sklearn 的逻辑回归来训练一个庞大的数据集。 我已经设置了参数n_jobs=-1(也试过n_jobs = 5, 10, ...),但是当我打开htop时,我可以看到它仍然只使用一个核心。
是不是说逻辑回归只是忽略了 n_jobs 参数?
我该如何解决这个问题?我真的需要这个过程变得并行......
附:我正在使用 sklearn 0.17.1
【问题讨论】:
【参考方案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
)
启动多个线程需要一两分钟。
【讨论】:
以上是关于sklearn Logistic Regression with n_jobs=-1 实际上并没有并行化的主要内容,如果未能解决你的问题,请参考以下文章
用于Logistic回归评估的Sklearn Python Log Loss引发了错误
用于 Logistic 回归评估的 Sklearn Python Log Loss 引发错误