docstr: Params
  ------
  reg_param: float
      Higher is more regularization (can be arbitrarily large, should not be < 0)
  
  shrinkage_scheme: str
      Experimental: Used to experiment with different forms of shrinkage. options are:
          (i) node_based shrinks based on number of samples in parent node
          (ii) leaf_based only shrinks leaf nodes based on number of leaf samples
          (iii) constant shrinks every node by a constant lambda
docstr_tok: ["Params","--","--","--","reg_param",":","float","Higher","is","more","regularization","(","can","be","arbitrarily","large",",","should","not","be","<","0",")","shrinkage_scheme",":","str","Experimental",":","Used","to","experiment","with","different","forms","of","shrinkage",".","options","are",":","(","i",")","node_based","shrinks","based","on","number","of","samples","in","parent","node","(","ii",")","leaf_based","only","shrinks","leaf","nodes","based","on","number","of","leaf","samples","(","iii",")","constant","shrinks","every","node","by","a","constant","lambda"]
code: def __init__(
      self,
      estimator_: C45TreeClassifier,
      reg_param: float = 1,
      shrinkage_scheme_: str = "node_based",
  ):
      """
      Params
      ------
      reg_param: float
          Higher is more regularization (can be arbitrarily large, should not be < 0)
  
      shrinkage_scheme: str
          Experimental: Used to experiment with different forms of shrinkage. options are:
              (i) node_based shrinks based on number of samples in parent node
              (ii) leaf_based only shrinks leaf nodes based on number of leaf samples
              (iii) constant shrinks every node by a constant lambda
      """
      super().__init__()
      self.reg_param = reg_param
      # print('est', estimator_)
      self.estimator_ = estimator_
      self.shrinkage_scheme_ = shrinkage_scheme_
  
imports: import copy
  from copy import deepcopy
  from typing import List
  from xml.dom import minidom
  from xml.etree import ElementTree
  import numpy
  import pandas
  from sklearn.base import BaseEstimator, ClassifierMixin
  from sklearn.model_selection import cross_val_score
  from sklearn.utils.validation import check_array, check_is_fitted, check_X_y
  from imodels.util.arguments import check_fit_arguments
  from ..c45_tree.c45_utils import decision, is_numeric_feature, gain, gain_ratio, get_best_split, set_as_leaf_node
  from ...util.data_util import get_clean_dataset
label_desc: Use image node_id 1 to create a new HSC45TreeClassifier object from inherited base classes: BaseEstimator with example: obj = HSC45TreeClassifier(estimator_, reg_param, shrinkage_scheme_)