code: def fit(self, X, y, sample_weight=None, *args, **kwargs):
      m = DecisionTreeCCPClassifier(
          self.estimator_, desired_complexity=self.desired_complexity
      )
      m.fit(X, y, sample_weight, *args, **kwargs)
      self.scores_ = []
      for reg_param in self.reg_param_list:
          est = HSTreeClassifier(deepcopy(m.estimator_), reg_param)
          cv_scores = cross_val_score(
              est, X, y, cv=self.cv, scoring=self.scoring
          )
          self.scores_.append(np.mean(cv_scores))
      self.reg_param = self.reg_param_list[np.argmax(self.scores_)]
      super().fit(X=X, y=y)
  
imports: from copy import deepcopy
  from typing import List
  import numpy
  from sklearn import datasets
  from sklearn.base import BaseEstimator
  from sklearn.model_selection import cross_val_score, train_test_split
  from sklearn.tree import DecisionTreeClassifier
  from imodels.tree.hierarchical_shrinkage import HSTreeRegressor, HSTreeClassifier
  from imodels.util.tree import compute_tree_complexity
label_desc: Use image node_id 2 for calling the HSDecisionTreeCCPClassifierCV obj's underlying member method code with example usage: obj.fit(X, y, sample_weight) without return types