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 __init__(self, n_splits: int = 10):
      super().__init__()
      self._min_per_class: dict[ClfTarget, float] = {}
      self._max_per_class: dict[ClfTarget, float] = {}
      self._att_dist_per_class: dict[ClfTarget, Gaussian] = {}
      self.n_splits = n_splits
  
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 1 to create a new GaussianSplitter object from inherited base classes: Splitter with example: obj = GaussianSplitter(n_splits)