PermissionError with RandomizedSearchCV - PullRequest
2 голосов
/ 05 июня 2019

Я пытаюсь использовать RandomizedSearchCV для настройки гиперпарамеров для случайного леса, но у меня появляются моменты PermissionError после запуска кода.

Первоначальный запуск не имел PermissionError (однако он выдал ошибку недопустимого дескриптора), но теперь я вообще не могу выполнить код. Из того, что я смог выяснить, WinError 5 обычно генерируется, когда код пытается отформатировать диск без надлежащих разрешений, но, насколько мне известно, RandomizedSearch не пытается ничего изменить. Я еще не пытался работать от имени администратора, но получить доступ к этой учетной записи было бы сложно, поэтому я пытаюсь выяснить, есть ли другой способ решить эту проблему. Я использую Python 3.7.


n_estimators = [int(x) for x in np.linspace(start=200, stop=2000, num=10)]
max_features = ['auto', 'sqrt']
max_depth = [int(x) for x in np.linspace(10, 110, num=11)]
max_depth.append(None)
min_samples_split = [2, 5, 10]
min_samples_leaf = [1, 2, 4]
bootstrap = [True, False]

random_grid = {'n_estimators': n_estimators,
               'max_features': max_features,
               'max_depth': max_depth,
               'min_samples_split': min_samples_split,
               'min_samples_leaf': min_samples_leaf,
               'bootstrap': bootstrap}

print(random_grid)

constructed_data = pd.read_csv('Examples/Test_data.CSV')

forest = RandomForestClassifier()

forest.fit(train, train_labels)

forest_random = RandomizedSearchCV(estimator=forest, param_distributions=random_grid, n_iter=100,
                                   cv=3, verbose=2, n_jobs=-1)

forest_random.fit(train, train_labels)

Ожидается: без ошибок и рекомендуемые значения гиперпараметра

Фактически:

Fitting 3 folds for each of 100 candidates, totalling 300 fits
[Parallel(n_jobs=-1)]: Using backend LokyBackend with 4 concurrent workers.
exception calling callback for <Future at 0x1013bc90 state=finished raised BrokenProcessPool>
joblib.externals.loky.process_executor._RemoteTraceback: 
'''
Traceback (most recent call last):
  File "C:\Users\dalinar\PycharmProjects\visualizer\venv\lib\site-packages\joblib\externals\loky\process_executor.py", line 391, in _process_worker
    call_item = call_queue.get(block=True, timeout=timeout)
  File "C:\Users\dalinar\AppData\Local\Programs\Python\Python37-32\lib\multiprocessing\queues.py", line 99, in get
    if not self._rlock.acquire(block, timeout):
PermissionError: [WinError 5] Access is denied
'''

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

1 Ответ

0 голосов
/ 26 июня 2019

Похоже, у вас проблема с параллельной обработкой, поэтому попробуйте установить n_jobs=1 при создании RandomizedSearchCV() объекта.

Кроме того, возможно, вы захотите взглянуть на Параллелизм в gridsearcCV заканчивается ошибкой разрешения

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...