code: def children_impurity(
      self,
      impurity_left: float,
      impurity_right: float,
  ):
      gini_left, gini_right = 0.0, 0.0
      for k in range(self.n_outputs):
          sq_count_left, sq_count_right = 0.0, 0.0
          for c in range(int(self.n_classes[k])):
              count_k = self.sum_left[k, c]
              sq_count_left += count_k * count_k
              count_k = self.sum_right[k, c]
              sq_count_right += count_k * count_k
  
          gini_left += 1.0 - sq_count_left / (
              self.weighted_n_left * self.weighted_n_left
          )
          gini_right += 1.0 - sq_count_right / (
              self.weighted_n_right * self.weighted_n_right
          )
      impurity_left = gini_left / self.n_outputs
      impurity_right = gini_right / self.n_outputs
      return impurity_left, impurity_right
  
imports: from abc import ABC, abstractmethod
  import ivy
label_desc: Use image node_id 2 for calling the Gini obj's underlying member method code with example usage: obj.children_impurity(impurity_left, impurity_right) and returns: impurity_left,  impurity_right