使用Joblib并行化Scikit学习模型训练(带有交叉验证)

时间:2018-06-20 13:18:36

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

我有一些模型,通常需要约30秒才能在datset上训练。

我正在使用交叉验证来训练最佳模型,这需要30分钟。我正在尝试加快速度,以便可以进行实验性快速搜索。

我做了什么:

clf =  GridSearchCV(LinearSVC(C=1), param_grid, cv=5, n_jobs=4, scoring= '%s' % score) #  n_jobs=-1

我在我的i7 PC上放置了n_jobs = 4,即内核。

发生了什么事

程序仍然运行缓慢,这4个4进程一次又一次地输出内容,即程序的每一行(基于print语句)看起来多次运行(而不仅仅是4次,一次又一次地运行) )。

这是任务管理器中的CPU状态:

enter image description here

现在,CPU未被充分使用。该程序仍然运行缓慢,我不知道内部发生了什么,为什么还要一次又一次执行一些打印语句。

即使我将所有代码都放入主代码(导入文件除外),我仍会收到此警告。

line 305, in configure
    '[joblib] Attempting to do parallel computing '
ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your main loop using "if __name__ == '__main__'". Please see the joblib documentation on Parallel for more information

因此,请提供有关如何使用n_jobs快速运行我的作业的帮助。没有它,如果我增加参数搜索空间,我的交叉验证将永远运行。

还有什么方法可以解决以上警告并最大限度地利用我的CPU来完成此机器学习工作?

0 个答案:

没有答案