class_docstr: A `DecisionNode` encapsulates internal node in the tree
  Unlike a `LeafNode`, it contains very little actual logic beyond tying the tree together
code: def current_value(self):
      n_l = self.left_child.n_obs
      n_r = self.right_child.n_obs
      l_val = (
          self.left_child.current_value
          if type(self.left_child) == DecisionNode
          else self.left_child.mean_response
      )
      r_val = (
          self.right_child.current_value
          if type(self.right_child) == DecisionNode
          else self.right_child.mean_response
      )
      l_sum = l_val * n_l
      r_sum = r_val * n_r
      return (l_sum + r_sum) / self.n_obs
  
imports: from typing import Union, Tuple
  from .data import Data
  from .split import Split, SplitCondition
label_desc: Use image node_id 5 for calling the DecisionNode obj's underlying member method code with example usage: obj.current_value() and returns: unknown