code: def opt_pro(optimization_protocol):
      opt = optimization_protocol(
          iterations=3, random_state=32, n_initial_points=1
      )
      opt.forge_experiment(
          model_initializer=XGBRegressor,
          model_init_params=dict(
              max_depth=Integer(2, 10),
              n_estimators=Integer(50, 300),
              learning_rate=Real(0.1, 0.9),
              subsample=0.5,
              booster=Categorical(["gbtree", "gblinear"]),
          ),
          model_extra_params=dict(
              fit=dict(eval_metric=Categorical(["rmse", "mae"]))
          ),
          feature_engineer=FeatureEngineer(
              [Categorical([nothing_transform], optional=True)]
          ),
      )
      opt.go()
      return opt
  
imports: from hyperparameter_hunter import Environment, FeatureEngineer, EngineerStep, __version__
  from hyperparameter_hunter import CVExperiment, Real, Integer, Categorical
  from hyperparameter_hunter import BayesianOptPro, DummyOptPro, ExtraTreesOptPro
  from hyperparameter_hunter.utils.learning_utils import get_boston_data
  from hyperparameter_hunter.utils.version_utils import HHVersion
  from os import makedirs
  import pytest
  from shutil import rmtree
  from xgboost import XGBRegressor
label_desc: Use image node_id 3 for calling a global function with example usage: opt_pro(optimization_protocol) and returns: opt