### 在大型数据集中提高Leave One Group Out速度

我正在使用LogisticRegression对一个大型数据集(150万个观察值)进行分类,使用的是LeaveOneGroupOut交叉验证。我使用scikit-learn进行实现。我的代码运行大约需要2天的时间,我希望能得到一些关于如何使其运行得更快的建议。以下是我的代码片段:

grp = data['id_x'].valueslogo = 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- 你使用的是scikit-learn。2- 你需要你的代码运行得更快。

为了更快地获得最终结果,你可以通过并行运行来同时训练多个模型。为此,你需要修改scikit-learn中的变量n_jobsn_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文档可能也会有所帮助:

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注