越来越多的工作导致培训缓慢



我一直在尝试让sklearn在gridsearch期间使用更多的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使用的核数的正确方法是什么?

我怀疑这可能与您只使用100个样本的小数据集进行测试有关-也许它不足以证明并行化的开销。

对于一个大得多的数据集,并行模式将优于n_jobs = 1方法。你试过在更大的样本上进行测试吗?

相关内容

  • 没有找到相关文章