GridSearchCV scikit-learn: TypeError LogisticRegression ... не реализует методы get_params - PullRequest
0 голосов
/ 06 мая 2020

Я хочу оптимизировать гиперпараметры оценки регрессии logisti c с помощью sklearn GridSearchCV (см. https://towardsdatascience.com/hyperparameter-tuning-c5619e7e6624) на основе следующего кода:

X_train, X_test, y_train, y_test,indices_train,indices_test = train_test_split(features_all2, df_all['labels'], df_all.index, test_size=0.25, random_state=1)

penalty = ['l1', 'l2']
C = [0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000]
class_weight = ['balanced']
solver = ['liblinear', 'saga']

param_grid = dict(penalty=penalty,
                  C=C,
                  class_weight=class_weight,
                  solver=solver)

grid = GridSearchCV(estimator=LogisticRegression,
                    param_grid=param_grid,
                    scoring='roc_auc',
                    verbose=1,
                    n_jobs=-1)
grid_result = grid.fit(X_train, y_train)

print('Best Score: ', grid_result.best_score_)
print('Best Params: ', grid_result.best_params_)

Он отлично работает до grid_result = grid.fit(X_train, y_train), где я получаю ошибку TypeError: Cannot clone object '' (type): это не похоже на оценку scikit-learn, поскольку он не реализует методы get_params.

Хотя при выполнении hasattr(LogisticRegression, 'get_params') получаю True .

Вот застрял. Кто-нибудь может знать, как с этим справиться? Большое спасибо!

1 Ответ

0 голосов
/ 06 мая 2020

Вам нужно передать estimator= LogisticRegression() вместо estimator= LogisticRegression

например:

from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
grid={"C":np.logspace(-3,3,7), "penalty":["l1","l2"]}# l1 lasso l2 ridge
logreg=LogisticRegression()
logreg_cv=GridSearchCV(logreg,grid,cv=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...