在大型数据集中将一组排除在外的速度改进
Speed Improvements to Leave One Group Out in Large Datasets
我正在通过 LogisticRegression over a large dataset (1.5 million observations) using LeaveOneGroupOut 交叉验证进行分类。我正在使用 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- 您正在使用 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 文档可能会有所帮助:
我正在通过 LogisticRegression over a large dataset (1.5 million observations) using LeaveOneGroupOut 交叉验证进行分类。我正在使用 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- 您正在使用 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 文档可能会有所帮助: