Проблемы с несколькими заданиями при использовании RandomizedSearchCV - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь запустить RandomizedSearchCV с вложенным RFECV, который сам имеет конвейер. Этот конвейер представляет собой MinMaxScaler, за которым следует один из 6 различных классификаторов. Когда я запускаю этот RandzomizedSearchCV с n_jobs = 1, все работает нормально, но когда я пытаюсь увеличить количество заданий, я сталкиваюсь с проблемами:

Например, и SV C покажет FitFailedWarning на многих сгибов:

[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.

Любая помощь в том, почему это может происходить, когда я пытаюсь использовать более одной работы, будет очень признательна.

Спасибо!

1 Ответ

0 голосов
/ 21 марта 2020

Хорошо, оказалось, что проблема была очень простой. Я устанавливал n_jobs как в RFECV, так и в RandomizedSearchCV, что вызывало все ошибки. Я предполагаю, что вложение параллельных заданий не очень хорошая идея.

Я также изменил код так, чтобы конвейер был последним этапом, причем рандомизированный поиск был вложен в конвейер (в отличие от конвейера, полностью вложенного в RFECV). Это сохраняет вычисления на шаге minmaxscaler конвейера, который всегда одинаков.

...