Я заметил взаимодействие между 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}