Настройка Logisti c Регрессия с использованием GridsearchCV - Взаимодействие между n_jobs и конвергенцией - PullRequest
0 голосов
/ 03 февраля 2020

Я заметил взаимодействие между n_jobs и конвергенцией, когда я запускаю GridSearchCV для настройки LogisticRegression. Не могли бы вы пролить свет на то, почему это происходит?

Когда я использую n_jobs = -1, GridSearchCV запускается без предупреждения и печатает результат, как показано ниже.

import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression

data = pd.read_csv('diabetes.csv') 

values = data.values
X = values[:,0:8]
y = values[:,8]

from sklearn.model_selection import GridSearchCV

dual=[True,False]
max_iter=[100,110,120,130,140]
C = [0.5, 1, 1.5, 2, 2.5]
param_grid = dict(dual=dual, C=C, max_iter=max_iter)

lr = LogisticRegression(penalty='l2', solver='liblinear')
grid = GridSearchCV(estimator=lr, param_grid=param_grid, cv = 3, n_jobs=-1)
grid_result = grid.fit(X, y)

print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))

Наилучшее: 0,772135 с использованием {'C': 2, 'dual': False, 'max_iter': 100}

Однако, когда я опускаю 'n_jobs = -1', это дает серию предупреждения сходимости, как показано ниже (повторяется много раз), и выведите тот же результат. Почему это происходит?

grid = GridSearchCV(estimator=lr, param_grid=param_grid, cv = 3)
grid_result = grid.fit(X, y)

print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))

E: \ Anaconda \ lib \ site-packages \ sklearn \ svm_base.py: 947: ConvergenceWarning: Liblinear не удалось сойтись, увеличьте количество итераций. «количество итераций.», ConvergenceWarning)

Наилучшее: 0,772135 с использованием {'C': 2, 'dual': False, 'max_iter': 100}

...