0

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

Emin
  • 13
  • 4

0 Answers0