import optuna
from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.model_selection import cross_val_score
def objective(trial):
model = HistGradientBoostingClassifier(
learning_rate=trial.suggest_float('learning_rate', 0.01, 0.2, log=True),
max_depth=trial.suggest_int('max_depth', 3, 12),
max_leaf_nodes=trial.suggest_int('max_leaf_nodes', 15, 63),
min_samples_leaf=trial.suggest_int('min_samples_leaf', 10, 100),
l2_regularization=trial.suggest_float('l2_regularization', 1e-6, 1.0, log=True),
random_state=42,
)
scores = cross_val_score(model, X_train, y_train, cv=5, scoring='roc_auc', n_jobs=-1)
return scores.mean()
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=50)
print(study.best_trial.params)
print(study.best_value)