我使用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_
答案 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文档可能会有所帮助: