Например, это настройка, которую я использовал для логистической регрессии L2 с перекрестной проверкой, чтобы найти лучший термин регуляризации, C, из сетка c_grid = [1e-15, 1e-10, 1e-5, 1e-1, 10]:
Код: Выделить всё
lr = LogisticRegression(class_weight=class_weight,
solver='sag', # I also tried 'liblinear'
max_iter=10000,
tol=0.1,
random_state=seed,
penalty='l2')
C = [1e-15, 1e-10, 1e-5, 1e-1, 10]
c_grid = {"C": C}
c_grid = {k: v for k, v in c_grid.items() if v is not None}
...
cv = StratifiedKFold(n_splits=5, random_state=seed, shuffle=True)
clf = GridSearchCV(estimator=lr,
param_grid=c_grid,
scoring='roc_auc',
cv=cv,
return_train_score=True).fit(X_train, Y_train)
best_model = clf.best_estimator_
prob = clf.predict_proba(X_train)[:, 1]
pred = clf.predict(X_train)
Плюс, когда я пытался использовать best_model для вычисления результатов тестирования
Код: Выделить всё
prob = clf.predict_proba(X_test)[:, 1]
pred = clf.predict(X_test)
Код: Выделить всё
X_test_batches = np.array_split(X_test, N)
args = [(best_model, batch) for batch in X_test_batches]
with Pool(N) as pool:
prob_batches = pool.map(predict_batch, args)
prob = np.concatenate(prob_batches)
pred = (prob >= 0.5)
Код: Выделить всё
z = np.dot(X_test, best_model.coef_.T) + best_model.intercept_
prob = 1 / (1 + np.exp(-z))
Подробнее здесь: https://stackoverflow.com/questions/788 ... ets-in-skl