class_docstr: Hoeffding Tree or Very Fast Decision Tree classifier.
  
  Parameters
  ----------
  grace_period
      Number of instances a leaf should observe between split attempts.
  max_depth
      The maximum depth a tree can reach. If `None`, the tree will grow indefinitely.
  split_criterion
      Split criterion to use.</br>
      - 'gini' - Gini</br>
      - 'info_gain' - Information Gain</br>
      - 'hellinger' - Helinger Distance</br>
  delta
      Significance level to calculate the Hoeffding bound. The significance level is given by
      `1 - delta`. Values closer to zero imply longer split decision delays.
  tau
      Threshold below which a split will be forced to break ties.
  leaf_prediction
      Prediction mechanism used at leafs.</br>
      - 'mc' - Majority Class</br>
      - 'nb' - Naive Bayes</br>
      - 'nba' - Naive Bayes Adaptive</br>
  nb_threshold
      Number of instances a leaf should observe before allowing Naive Bayes.
  nominal_attributes
      List of Nominal attributes identifiers. If empty, then assume that all numeric
      attributes should be treated as continuous.
  splitter
      The Splitter or Attribute Observer (AO) used to monitor the class statistics of numeric
      features and perform splits. Splitters are available in the `tree.splitter` module.
      Different splitters are available for classification and regression tasks. Classification
      and regression splitters can be distinguished by their property `is_target_class`.
      This is an advanced option. Special care must be taken when choosing different splitters.
      By default, `tree.splitter.GaussianSplitter` is used if `splitter` is `None`.
  binary_split
      If True, only allow binary splits.
  min_branch_fraction
      The minimum percentage of observed data required for branches resulting from split
      candidates. To validate a split candidate, at least two resulting branches must have
      a percentage of samples greater than `min_branch_fraction`. This criterion prevents
      unnecessary splits when the majority of instances are concentrated in a single branch.
  max_share_to_split
      Only perform a split in a leaf if the proportion of elements in the majority class is
      smaller than this parameter value. This parameter avoids performing splits when most
      of the data belongs to a single class.
  max_size
      The max size of the tree, in Megabytes (MB).
  memory_estimate_period
      Interval (number of processed instances) between memory consumption checks.
  stop_mem_management
      If True, stop growing as soon as memory limit is hit.
  remove_poor_attrs
      If True, disable poor attributes to reduce memory usage.
  merit_preprune
      If True, enable merit-based tree pre-pruning.
  
  Notes
  -----
  A Hoeffding Tree [^1] is an incremental, anytime decision tree induction algorithm that is
  capable of learning from massive data streams, assuming that the distribution generating
  examples does not change over time. Hoeffding trees exploit the fact that a small sample can
  often be enough to choose an optimal splitting attribute. This idea is supported mathematically
  by the Hoeffding bound, which quantifies the number of observations (in our case, examples)
  needed to estimate some statistics within a prescribed precision (in our case, the goodness of
  an attribute).
  
  A theoretically appealing feature of Hoeffding Trees not shared by other incremental decision
  tree learners is that it has sound guarantees of performance. Using the Hoeffding bound one
  can show that its output is asymptotically nearly identical to that of a non-incremental
  learner using infinitely many examples. Implementation based on MOA [^2].
  
  References
  ----------
  
  [^1]: G. Hulten, L. Spencer, and P. Domingos. Mining time-changing data streams.
     In KDD’01, pages 97–106, San Francisco, CA, 2001. ACM Press.
  
  [^2]: Albert Bifet, Geoff Holmes, Richard Kirkby, Bernhard Pfahringer.
     MOA: Massive Online Analysis; Journal of Machine Learning Research 11: 1601-1604, 2010.
  
  Examples
  --------
  
  >>> from river.datasets import synth
  >>> from river import evaluate
  >>> from river import metrics
  >>> from river import tree
  
  >>> gen = synth.Agrawal(classification_function=0, seed=42)
  >>> # Take 1000 instances from the infinite data generator
  >>> dataset = iter(gen.take(1000))
  
  >>> model = tree.HoeffdingTreeClassifier(
  ...     grace_period=100,
  ...     delta=1e-5,
  ...     nominal_attributes=['elevel', 'car', 'zipcode']
  ... )
  
  >>> metric = metrics.Accuracy()
  
  >>> evaluate.progressive_val_score(dataset, model, metric)
  Accuracy: 84.58%
class_docstr_tok: ["Hoeffding","Tree","or","Very","Fast","Decision","Tree","classifier",".","Parameters","--","--","--","--","--","grace_period","Number","of","instances","a","leaf","should","observe","between","split","attempts",".","max_depth","The","maximum","depth","a","tree","can","reach",".","If","`","None","`",",","the","tree","will","grow","indefinitely",".","split_criterion","Split","criterion","to","use.","<","\/br",">","-","'gini","'","-","Gini","<","\/br",">","-","'info_gain","'","-","Information","Gain","<","\/br",">","-","'hellinger","'","-","Helinger","Distance","<","\/br",">","delta","Significance","level","to","calculate","the","Hoeffding","bound",".","The","significance","level","is","given","by","`","1","-","delta","`",".","Values","closer","to","zero","imply","longer","split","decision","delays",".","tau","Threshold","below","which","a","split","will","be","forced","to","break","ties",".","leaf_prediction","Prediction","mechanism","used","at","leafs.","<","\/br",">","-","'mc","'","-","Majority","Class","<","\/br",">","-","'nb","'","-","Naive","Bayes","<","\/br",">","-","'nba","'","-","Naive","Bayes","Adaptive","<","\/br",">","nb_threshold","Number","of","instances","a","leaf","should","observe","before","allowing","Naive","Bayes",".","nominal_attributes","List","of","Nominal","attributes","identifiers",".","If","empty",",","then","assume","that","all","numeric","attributes","should","be","treated","as","continuous",".","splitter","The","Splitter","or","Attribute","Observer","(","AO",")","used","to","monitor","the","class","statistics","of","numeric","features","and","perform","splits",".","Splitters","are","available","in","the","`","tree.splitter","`","module",".","Different","splitters","are","available","for","classification","and","regression","tasks",".","Classification","and","regression","splitters","can","be","distinguished","by","their","property","`","is_target_class","`",".","This","is","an","advanced","option",".","Special","care","must","be","taken","when","choosing","different","splitters",".","By","default",",","`","tree.splitter.GaussianSplitter","`","is","used","if","`","splitter","`","is","`","None","`",".","binary_split","If","True",",","only","allow","binary","splits",".","min_branch_fraction","The","minimum","percentage","of","observed","data","required","for","branches","resulting","from","split","candidates",".","To","validate","a","split","candidate",",","at","least","two","resulting","branches","must","have","a","percentage","of","samples","greater","than","`","min_branch_fraction","`",".","This","criterion","prevents","unnecessary","splits","when","the","majority","of","instances","are","concentrated","in","a","single","branch",".","max_share_to_split","Only","perform","a","split","in","a","leaf","if","the","proportion","of","elements","in","the","majority","class","is","smaller","than","this","parameter","value",".","This","parameter","avoids","performing","splits","when","most","of","the","data","belongs","to","a","single","class",".","max_size","The","max","size","of","the","tree",",","in","Megabytes","(","MB",")",".","memory_estimate_period","Interval","(","number","of","processed","instances",")","between","memory","consumption","checks",".","stop_mem_management","If","True",",","stop","growing","as","soon","as","memory","limit","is","hit",".","remove_poor_attrs","If","True",",","disable","poor","attributes","to","reduce","memory","usage",".","merit_preprune","If","True",",","enable","merit-based","tree","pre-pruning",".","Notes","--","--","-","A","Hoeffding","Tree","[","^1","]","is","an","incremental",",","anytime","decision","tree","induction","algorithm","that","is","capable","of","learning","from","massive","data","streams",",","assuming","that","the","distribution","generating","examples","does","not","change","over","time",".","Hoeffding","trees","exploit","the","fact","that","a","small","sample","can","often","be","enough","to","choose","an","optimal","splitting","attribute",".","This","idea","is","supported","mathematically","by","the","Hoeffding","bound",",","which","quantifies","the","number","of","observations","(","in","our","case",",","examples",")","needed","to","estimate","some","statistics","within","a","prescribed","precision","(","in","our","case",",","the","goodness","of","an","attribute",")",".","A","theoretically","appealing","feature","of","Hoeffding","Trees","not","shared","by","other","incremental","decision","tree","learners","is","that","it","has","sound","guarantees","of","performance",".","Using","the","Hoeffding","bound","one","can","show","that","its","output","is","asymptotically","nearly","identical","to","that","of","a","non-incremental","learner","using","infinitely","many","examples",".","Implementation","based","on","MOA","[","^2","]",".","References","--","--","--","--","--","[","^1","]",":","G.","Hulten",",","L.","Spencer",",","and","P.","Domingos",".","Mining","time-changing","data","streams",".","In","KDD","\u2019","01",",","pages","97\u2013106",",","San","Francisco",",","CA",",","2001",".","ACM","Press",".","[","^2","]",":","Albert","Bifet",",","Geoff","Holmes",",","Richard","Kirkby",",","Bernhard","Pfahringer",".","MOA",":","Massive","Online","Analysis",";","Journal","of","Machine","Learning","Research","11",":","1601-1604",",","2010",".","Examples","--","--","--","--",">",">",">","from","river.datasets","import","synth",">",">",">","from","river","import","evaluate",">",">",">","from","river","import","metrics",">",">",">","from","river","import","tree",">",">",">","gen","=","synth.Agrawal","(","classification_function=0",",","seed=42",")",">",">",">","#","Take","1000","instances","from","the","infinite","data","generator",">",">",">","dataset","=","iter","(","gen.take","(","1000",")",")",">",">",">","model","=","tree.HoeffdingTreeClassifier","(","...","grace_period=100",",","...","delta=1e-5",",","...","nominal_attributes=","[","'elevel","'",",","'car","'",",","'zipcode","'","]","...",")",">",">",">","metric","=","metrics.Accuracy","(",")",">",">",">","evaluate.progressive_val_score","(","dataset",",","model",",","metric",")","Accuracy",":","84.58","%"]
code: def _mutable_attributes(self):
      return {"grace_period", "delta", "tau"}
  
imports: from __future__ import annotations
  from river import base
  from .hoeffding_tree import HoeffdingTree
  from .nodes.branch import DTBranch
  from .nodes.htc_nodes import LeafMajorityClass, LeafNaiveBayes, LeafNaiveBayesAdaptive
  from .nodes.leaf import HTLeaf
  from .split_criterion import GiniSplitCriterion, HellingerDistanceCriterion, InfoGainSplitCriterion
  from .splitter import GaussianSplitter, Splitter
label_desc: Use image node_id 2 for calling the HoeffdingTreeClassifier obj's underlying member method code with example usage: obj._mutable_attributes() and returns: unknown