【发布时间】:2015-11-20 01:16:25
【问题描述】:
我一直试图让 sklearn 在网格搜索期间使用更多的 cpu 内核(在 Windows 机器上执行此操作)。代码是这样的:
parameters = {'n_estimators': numpy.arange(1,10), 'max_depth':numpy.arange(1,10)}
estimator = RandomForestClassifier(verbose=1)
clf = grid_search.GridSearchCV(estimator, parameters, n_jobs=-1)
clf.fit(features_train, labels_train)
我正在一个只有 100 个样本的小型数据集上对此进行测试。
当 n_jobs 设置为 1(默认)时,一切都会正常进行并很快完成。但是,它只使用 1 个 cpu 核心。
在上面,我将 n_jobs 设置为 -1 以使用所有 cpu 内核。当我这样做时(或者如果我使用任何大于 1 的值),我可以看到我的机器上正在使用正确数量的内核,但是速度非常慢。当 n_jobs = 1 时,训练在大约 10 秒内完成。任何大于 1 的东西,训练可能需要 5-10 分钟。
增加gridsearch使用的核心数量的正确方法是什么?
【问题讨论】:
-
您的代码对我来说似乎是正确的。你的
sklearn是什么版本?你能在另一台机器上试试你的代码吗(也许有不同的操作系统)? -
我使用的是 0.16.1 版。不幸的是,我无法访问另一台机器,也无法访问其他操作系统。 n_jobs > 1 基本上我尝试过的所有其他事情都是有问题的(除了网格搜索)
标签: python machine-learning scikit-learn