class_docstr: Base leaf class to be used in Hoeffding Trees.
  
  Parameters
  ----------
  stats
      Target statistics (they differ in classification and regression tasks).
  depth
      The depth of the node
  splitter
      The numeric attribute observer algorithm used to monitor target statistics
      and perform split attempts.
  attributes
      Other parameters passed to the learning node.
docstr: Find possible split candidates.
  
  Parameters
  ----------
  criterion
      The splitting criterion to be used.
  tree
      Decision tree.
  
  Returns
  -------
  Split candidates.
docstr_tok: ["Find","possible","split","candidates",".","Parameters","--","--","--","--","--","criterion","The","splitting","criterion","to","be","used",".","tree","Decision","tree",".","Returns","--","--","--","-","Split","candidates","."]
code: def best_split_suggestions(
      self, criterion, tree
  ) -> list[BranchFactory]:
      """Find possible split candidates.
  
      Parameters
      ----------
      criterion
          The splitting criterion to be used.
      tree
          Decision tree.
  
      Returns
      -------
      Split candidates.
      """
      best_suggestions = []
      pre_split_dist = self.stats
      if tree.merit_preprune:
          # Add null split as an option
          null_split = BranchFactory()
          best_suggestions.append(null_split)
      for att_id, splitter in self.splitters.items():
          best_suggestion = splitter.best_evaluated_split_suggestion(
              criterion, pre_split_dist, att_id, tree.binary_split
          )
          best_suggestions.append(best_suggestion)
  
      return best_suggestions
  
imports: from __future__ import annotations
  import abc
  import numbers
  import typing
  from ..base import Leaf
  from ..utils import BranchFactory
label_desc: Use image node_id 12 for calling the HTLeaf obj's underlying member method code with example usage: obj.best_split_suggestions(criterion, tree) and returns: best_suggestions