加快大型数据集中的一个群体的速度提升

时间:2018-02-03 13:53:28

标签: python machine-learning scikit-learn regression cross-validation

我使用LogisticRegression交叉验证通过LeaveOneGroupOut对大型数据集(150万个观察点)进行分类。我正在使用scikit-learn来实现。我的代码需要大约2天才能运行,我将非常感谢您对如何使其更快的输入。我的代码片段如下所示:

grp = data['id_x'].values
logo = LeaveOneGroupOut()
LogReg = LogisticRegression()
params_grid = {'C': [0.78287388,  1.19946909,  1.0565957 ,  0.69874106, 0.88427995, 1.33028731,  0.51466415,  0.91421747,  1.25318725,  0.82665192, 1, 10],
'penalty': ['l1', 'l2']  }

random_search = RandomizedSearchCV(LogReg, param_distributions = params_grid, n_iter = 3, cv = logo, scoring = 'accuracy')
random_search.fit(X, y, grp)

print random_search.best_params_
print random_search.best_score_

1 个答案:

答案 0 :(得分:1)

我将做出以下假设: 1-你正在使用scikit-learn。 2-你需要更快的代码。

为了更快地获得最终结果,您可以通过并行运行来一次训练多个模型。为此,您需要在scikit-learn中修改变量n_jobs。如果您在训练模型时没有在计算机上运行任何其他内容,n_jobs的可能选项可以是#of_CPU_cores#of_CPU_cores-1

<强>示例:

RandomizedSearchCV 并行:

random_search = RandomizedSearchCV(LogReg, n_jobs=3, param_distributions = params_grid, n_iter = 3, cv = logo, scoring = 'accuracy')

LogisticRegression 并行:

LogisticRegression(n_jobs=3)

我建议仅并行化 RandomizedSearchCV

查看原始的scikit-learn文档可能会有所帮助: