class_docstr: Extra Tree regressor.
  
  This is the base-estimator of the Extra Trees regressor.
  This variant of the Hoeffding Tree regressor includes the `max_features` parameter,
  which defines the number of randomly selected features to be considered at each split.
  It also evaluates split candidates randomly.
class_docstr_tok: ["Extra","Tree","regressor",".","This","is","the","base-estimator","of","the","Extra","Trees","regressor",".","This","variant","of","the","Hoeffding","Tree","regressor","includes","the","`","max_features","`","parameter",",","which","defines","the","number","of","randomly","selected","features","to","be","considered","at","each","split",".","It","also","evaluates","split","candidates","randomly","."]
docstr: Create a new learning node.
  The type of learning node depends on the tree configuration.
code: def _new_learning_node(self, initial_stats=None, parent=None):  # noqa
      """Create a new learning node.
      The type of learning node depends on the tree configuration.
      """
  
      if parent is not None:
          depth = parent.depth + 1
      else:
          depth = 0
  
      # Generate a random seed for the new learning node
      seed = self._rng.randint(0, sys.maxsize)
  
      leaf_model = None
      if self.leaf_prediction in {self._MODEL, self._ADAPTIVE}:
          if parent is None:
              leaf_model = self.leaf_model.clone()
          else:
              leaf_model = parent._leaf_model.clone(
                  include_attributes=True
              )  # noqa
  
      if self.leaf_prediction == self._TARGET_MEAN:
          return ETLeafMean(
              initial_stats,
              depth,
              self.splitter,
              self.max_features,
              seed,
          )
      elif self.leaf_prediction == self._MODEL:
          return ETLeafModel(
              initial_stats,
              depth,
              self.splitter,
              self.max_features,
              seed,
              leaf_model=leaf_model,
          )
      else:  # adaptive learning node
          new_adaptive = ETLeafAdaptive(
              initial_stats,
              depth,
              self.splitter,
              self.max_features,
              seed,
              leaf_model=leaf_model,
          )
          if parent is not None and isinstance(parent, ETLeafAdaptive):
              new_adaptive._fmse_mean = parent._fmse_mean  # noqa
              new_adaptive._fmse_model = parent._fmse_model  # noqa
  
          return new_adaptive
  
imports: from __future__ import annotations
  import abc
  import collections
  import math
  import random
  import sys
  from river import base, drift, metrics, tree, utils
  from river.tree.nodes.et_nodes import ETLeafAdaptive, ETLeafMean, ETLeafModel
  from river.tree.splitter.random_splitter import RegRandomSplitter
label_desc: Use image node_id 2 for calling the ETRegressor obj's underlying member method code with example usage: obj._new_learning_node(initial_stats, parent) and returns: ETLeafMean, ETLeafModel, new_adaptive