code: def __init__(
      self,
      num_trees=3,
      max_depth=3,
      complete_secure=0,
      learning_rate=0.3,
      objective="binary:bce",
      num_class=1,
      max_bin=32,
      l2=0.1,
      l1=0,
      min_impurity_split=1e-2,
      min_sample_split=2,
      min_leaf_node=1,
      min_child_weight=1,
      goss=False,
      goss_start_iter=0,
      top_rate=0.2,
      other_rate=0.1,
      gh_pack=True,
      split_info_pack=True,
      hist_sub=True,
      random_seed=42,
  ):
      super().__init__()
      self.num_trees = num_trees
      self.learning_rate = learning_rate
      self.max_depth = max_depth
      self.objective = objective
      self.max_bin = max_bin
      self.goss = goss
      self.goss_start_iter = goss_start_iter
      self.top_rate = top_rate
      self.other_rate = other_rate
      self.random_seed = random_seed
  
      # regularization
      self.l2 = l2
      self.l1 = l1
      self.min_impurity_split = min_impurity_split
      self.min_sample_split = min_sample_split
      self.min_leaf_node = min_leaf_node
      self.min_child_weight = min_child_weight
  
      # running var
      self.num_class = num_class
      self._accumulate_scores = None
      self._tree_dim = (
          None  # tree dimension, if is multilcass task, tree dim > 1
      )
      self._loss_func: Union[BINARY_BCE, MULTI_CE, REGRESSION_L2] = None
      self._train_predict = None
      self._hist_sub = hist_sub
      self._complete_secure = complete_secure
  
      # encryption
      self._encrypt_kit = None
      self._gh_pack = gh_pack
      self._split_info_pack = split_info_pack
  
      # reg score
      self._init_score = None
  
      # model loaded
      self._model_loaded = False
  
      # loss history
      self._loss_history = []
  
imports: import numpy
  import pandas
  from typing import Optional, Union
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from fate.ml.ensemble.algo.secureboost.hetero._base import HeteroBoostingTree
  from fate.ml.ensemble.learner.decision_tree.hetero.guest import HeteroDecisionTreeGuest
  from fate.ml.ensemble.utils.binning import binning
  from fate.ml.ensemble.learner.decision_tree.tree_core.loss import OBJECTIVE, get_task_info, MULTI_CE, BINARY_BCE, REGRESSION_L2
  from fate.ml.ensemble.algo.secureboost.common.predict import predict_leaf_guest
  from fate.ml.utils.predict_tools import compute_predict_details, PREDICT_SCORE, BINARY, MULTI, REGRESSION
  from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import GUEST_FEAT_ONLY, ALL_FEAT
  from fate.ml.ensemble.utils.sample import goss_sample
  import logging
label_desc: Use image node_id 1 to create a new HeteroSecureBoostGuest object from inherited base classes: HeteroBoostingTree with example: obj = HeteroSecureBoostGuest(num_trees, max_depth, complete_secure, learning_rate, objective, num_class, max_bin, l2, l1, min_impurity_split, min_sample_split, min_leaf_node, min_child_weight, goss, goss_start_iter, top_rate, other_rate, gh_pack, split_info_pack, hist_sub, random_seed)