sklearn gridsearch不能使用验证集导致的过拟合问题

发布时间 2023-05-31 21:54:04作者: 笨笨和呆呆

https://stackoverflow.com/questions/31948879/using-explicit-predefined-validation-set-for-grid-search-with-sklearn

 

 

或者用optuna

#### use optuna lib to finetune SVC hyperparameters
if method=='optuna':
import optuna
def objective(trial):
# Define hyperparameter Search Scope
C = trial.suggest_loguniform('C', 0.1, 10)
kernel = trial.suggest_categorical('kernel', ['poly', 'rbf'])
gamma = trial.suggest_loguniform('gamma', 0.01, 1.0)
model = SVC(C=C, kernel=kernel, gamma=gamma)
model.fit(self.x_train_scaled[selected_feas], self.y_train)
y_val_pred = model.predict(self.x_val_scaled[selected_feas])
auc = roc_auc_score(self.y_val, y_val_pred)
return auc
study = optuna.create_study(direction='maximize') ##maximize the auc
study.optimize(objective, n_trials=100)
print("Best parameters:", study.best_params)
best_model = SVC(**study.best_params)
best_model.fit(self.x_train_scaled[selected_feas], self.y_train)
y_test_pred = best_model.predict(self.x_test_scaled[selected_feas])
test_score = roc_auc_score(self.y_test,y_test_pred)
print('test_score:',test_score)