I'm trying to code optuna hyperparameter tunning as a method and then I will use it for different machine learning algorithms like decision tree, random forest, xgboost, logistic etc.
However, code gives me error like int is not subscriptable.
import optuna
def hyperparamter_tunning_op(model_object, parameters, x_train, y_train, n_trails=100, early_stopping_rounds 100):
def objective(trial):
hyperparameters = {}
for param_name, param_range in parameters.items():
if isinstance(param_range[0], int):
hyperparameters[param_name] = trial.suggest_int(param_name, param_range[0], param_range[1])
elif isinstance(param_range[0], object):
hyperparameters[param_name] = trial.suggest_categorical(param_name, param_range[0], param_range[1])
else:
hyperparameters[param_name] = trial.suggest_float(param_name, param_range[0], param_range[1], log=True)
estimator = model_object(**hyperparameters)
estimator.fit(x_train, y_train, early_stopping_rounds=early_stopping_rounds, verbose=5)
study = optuna.create_study(direction = "maximize")
study.optimize(objective, n_trails=n_trails)
best_params = study.best_params
all_trials =study.trials
return best_params, all_trials
Would if you help me, I will be so appreciated with it.
Thanks a lot.
Trying to code optuna as a method to use different ml algorithms