class_docstr: Numeric attribute observer for classification tasks that is based on
  Gaussian estimators.
  
  The distribution of each class is approximated using a Gaussian distribution. Hence,
  the probability density function can be easily calculated.
  
  
  Parameters
  ----------
  n_splits
      The number of partitions to consider when querying for split candidates.
class_docstr_tok: ["Numeric","attribute","observer","for","classification","tasks","that","is","based","on","Gaussian","estimators",".","The","distribution","of","each","class","is","approximated","using","a","Gaussian","distribution",".","Hence",",","the","probability","density","function","can","be","easily","calculated",".","Parameters","--","--","--","--","--","n_splits","The","number","of","partitions","to","consider","when","querying","for","split","candidates","."]
code: def update(self, att_val, target_val, w):
      if att_val is None:
          return
      else:
          try:
              val_dist = self._att_dist_per_class[target_val]
              if att_val < self._min_per_class[target_val]:
                  self._min_per_class[target_val] = att_val
              if att_val > self._max_per_class[target_val]:
                  self._max_per_class[target_val] = att_val
          except KeyError:
              val_dist = Gaussian()
              self._att_dist_per_class[target_val] = val_dist
              self._min_per_class[target_val] = att_val
              self._max_per_class[target_val] = att_val
  
          val_dist.update(att_val, w)
  
file_path: river/river/tree/splitter/gaussian_splitter.py
imports: from __future__ import annotations
  import math
  from river.base.typing import ClfTarget
  from river.proba import Gaussian
  from ..utils import BranchFactory
  from .base import Splitter
label_desc: Use image node_id 2 for calling the GaussianSplitter obj's underlying member method code with example usage: obj.update(att_val, target_val, w) without return types