我有一些模型,通常需要约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状态:
现在,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来完成此机器学习工作?