### 在大型数据集中提高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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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