我想使用sklearn的GridSearchCV来优化逻辑回归估计器的超参数(参见 https:/towardsdatascience.comhyperparameter-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.无法克隆对象'' (type ):似乎不是scikit-learn估计器,因为它没有实现'get_params'方法。无法克隆对象''(type ):它似乎不是一个scikit-learn估计器,因为它没有实现'get_params'方法。
虽然当做 hasattr(LogisticRegression, 'get_params')
我得到 真.
我被卡在这里。有谁可能有一个想法,如何处理这个问题?非常感谢!我想用sklearn的GridSearchCV优化逻辑回归估计器的超参数(见ttps)。
你需要通过 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)