code: def get_feature_path_importance(self, node_list):
      gini = np.zeros(self.tree_model.tree_.n_features)
      tree_ = self.tree_model.tree_
      for node in node_list:
          if self.tree_model.tree_.children_left[node] != -1:
              node_left = self.tree_model.tree_.children_left[node]
              node_right = self.tree_model.tree_.children_right[node]
              gini[tree_.feature[node]] += (
                  tree_.weighted_n_node_samples[node]
                  * tree_.impurity[node]
                  - tree_.weighted_n_node_samples[node_left]
                  * tree_.impurity[node_left]
                  - tree_.weighted_n_node_samples[node_right]
                  * tree_.impurity[node_right]
              )
      normalizer = np.sum(gini)
      if normalizer > 0.0:
          gini /= normalizer
  
      return gini
  
imports: from collections import defaultdict
  from typing import List, Mapping
  import numpy
  from sklearn.utils import compute_class_weight
  from dtreeviz.models.shadow_decision_tree import ShadowDecTree
  from dtreeviz.utils import criterion_remapping
label_desc: Use image node_id 23 for calling the ShadowSKDTree obj's underlying member method code with example usage: obj.get_feature_path_importance(node_list) and returns: gini