code: def gbm_model_build():
      """
      Train gbm model
      :returns model, training frame
      """
      prostate_train = h2o.import_file(
          path=pyunit_utils.locate(
              "smalldata/logreg/prostate_train.csv"
          )
      )
      prostate_train["CAPSULE"] = prostate_train["CAPSULE"].asfactor()
  
      ntrees = 100
      learning_rate = 0.1
      depth = 5
      min_rows = 10
      # Build H2O GBM classification model:
      gbm_h2o = H2OGradientBoostingEstimator(
          ntrees=ntrees,
          learn_rate=learning_rate,
          max_depth=depth,
          min_rows=min_rows,
          distribution="bernoulli",
      )
      gbm_h2o.train(
          x=list(range(1, prostate_train.ncol)),
          y="CAPSULE",
          training_frame=prostate_train,
      )
  
      # Doing PFI on test data vs train data: In the end, you need to decide whether you want to know how much the
      # model relies on each feature for making predictions (-> training data) or how much the feature contributes to
      # the performance of the model on unseen data (-> test data). To the best of my knowledge, there is no research
      # addressing the question of training vs. test data
      return gbm_h2o, prostate_train
  
file_path: h2o-3/h2o-py/tests/testdir_jira/pyunit_pubdev_7139_permutation_var_imp.py
imports: import sys, os
  import h2o
  from h2o.utils.typechecks import is_type
  from h2o.estimators import H2OGradientBoostingEstimator, H2OGeneralizedLinearEstimator
  from tests import pyunit_utils
label_desc: Use image node_id 1 for calling a global function with example usage: gbm_model_build() and returns: gbm_h2o,  prostate_train