n_jobs=1的GridSearchCV不适用于决策树/随机森林分类

2024-06-01 12:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用GridSearchCV来评估具有不同参数集的不同模型。Logistic回归和k-NN不会引起问题,但当n_jobs=-1时,决策树、随机林和一些其他类型的分类器不起作用

for classifier, paramSet, classifierName in zip(list_classifiers, list_paramSets, list_clfNames):
    gs = GridSearchCV(
                      estimator = classifier,
                      param_grid = paramSet,
                      cv = 10,      
                      n_jobs = -1           
                    )
    gs.fit(X_train, y_train)
    plot_learning_curve(gs, "Learning Curve", X_train, y_train, n_jobs=-1)

我正在谷歌Colab上工作,下面的任何一个解决方案都没有解决我的问题

from sklearn.externals.joblib import parallel_backend
clf = GridSearchCV(...)
with parallel_backend('threading',n_jobs = -1):
    clf.fit(x_train, y_train)
if __name__ == "__main__":
    import multiprocessing as mp; mp.set_start_method('forkserver', force=True) // 'spawn' has also failed
    /// Gridsearch and fit here ///

这是我的源代码:https://github.com/bahadirbasaran/pulsarDetection/blob/master/main.ipynb

错误日志:

error message

任何帮助都将不胜感激


Tags: importgsbackend参数parallelmainjobstrain
1条回答
网友
1楼 · 发布于 2024-06-01 12:24:28

您不需要使用任何其他调用来创建线程。您的第一个代码段应该可以工作。如果你打电话:

n_cpus = multiprocessing.cpu_count()

它的回报是什么? 如果您使用该选项,然后传递n_jobs=n_cpusn_jobs=n_cpus-1(如果您不希望您的计算机被锁定),请查看该选项是否有效。 从sklearn逻辑回归文档中:

n_jobs int, default=None Number of CPU cores used when parallelizing over classes if multi_class=’ovr’”. This parameter is ignored when the solver is set to ‘liblinear’ regardless of whether ‘multi_class’ is specified or not.

因此,可能正在运行的模型实际上使用的CPU不超过1个

希望这些想法能有所帮助

相关问题 更多 >