Python 使用RandomizedSearchCV时多个作业的问题

Python 使用RandomizedSearchCV时多个作业的问题,python,scikit-learn,grid-search,joblib,Python,Scikit Learn,Grid Search,Joblib,我正在尝试运行一个带有嵌套RFECV的RandomizedSearchCV,它本身有一个管道。这个管道是一个MinMaxScaler,后面跟着6个不同分类器中的一个。当我在n_jobs=1的情况下运行RandzomizedSearchCV时,一切正常,但当我尝试增加作业数量时,我遇到了以下问题: 例如,和SVC将在许多折叠上显示FitFailed警告: [CV] ................. estimator__clf__C=0.1, score=nan, total= 2.9s [

我正在尝试运行一个带有嵌套RFECV的RandomizedSearchCV,它本身有一个管道。这个管道是一个MinMaxScaler,后面跟着6个不同分类器中的一个。当我在n_jobs=1的情况下运行RandzomizedSearchCV时,一切正常,但当我尝试增加作业数量时,我遇到了以下问题:

例如,和SVC将在许多折叠上显示FitFailed警告:

[CV] ................. estimator__clf__C=0.1, score=nan, total=   2.9s
[Parallel(n_jobs=10)]: Done  12 tasks      | elapsed:    7.3s
[CV] estimator__clf__C=1 .............................................
C:\Users\user\Anaconda3\envs\npai_python37\lib\site-packages\sklearn\model_selection\_validation.py:536: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details:
sklearn.exceptions.NotFittedError: This SVC instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.
对于SVM,尽管有警告,它仍然可以工作。但是,对于DecisionTreeClassifier,它只会终止作业:

joblib.externals.loky.process_executor.TerminatedWorkerError: A worker process managed by the executor was unexpectedly terminated. This could be caused by a segmentation fault while calling the function or by an excessive memory usage causing the Operating System to kill the worker.
当我尝试使用多个工作时,对于为什么会发生这种情况的任何帮助都将非常感谢


谢谢大家!

好的,所以问题很简单。我在RFECV和RandomizedSearchCV中设置了n_作业,这导致了所有的错误。我猜嵌套并行作业不是一个好主意


我还修改了代码,使管道成为最后一步,随机搜索嵌套在管道中(而不是管道一直嵌套在RFECV中)。这节省了管道中minmaxscaler步骤的计算,该步骤始终相同。

我在make_pipeline()中遇到了类似的RFECV()问题。错误不同(它是FitFailedWarning),但删除RFECV()中的n_作业=-1解决了该错误。您可以在此处查看我的答案以了解类似问题: