class_docstr: Adaptive Random Forest Hoeffding Tree Classifier.
  
  This is the base-estimator of the Adaptive Random Forest classifier.
  This variant of the Hoeffding Tree classifier includes the `max_features`
  parameter, which defines the number of randomly selected features to be
  considered at each split.
class_docstr_tok: ["Adaptive","Random","Forest","Hoeffding","Tree","Classifier",".","This","is","the","base-estimator","of","the","Adaptive","Random","Forest","classifier",".","This","variant","of","the","Hoeffding","Tree","classifier","includes","the","`","max_features","`","parameter",",","which","defines","the","number","of","randomly","selected","features","to","be","considered","at","each","split","."]
code: def __init__(
      self,
      max_features: int = 2,
      grace_period: int = 200,
      max_depth: int | None = None,
      split_criterion: str = "info_gain",
      delta: float = 1e-7,
      tau: float = 0.05,
      leaf_prediction: str = "nba",
      nb_threshold: int = 0,
      nominal_attributes: list | None = None,
      splitter: Splitter | None = None,
      binary_split: bool = False,
      min_branch_fraction: float = 0.01,
      max_share_to_split: float = 0.99,
      max_size: float = 100.0,
      memory_estimate_period: int = 1000000,
      stop_mem_management: bool = False,
      remove_poor_attrs: bool = False,
      merit_preprune: bool = True,
      rng: random.Random | None = None,
  ):
      super().__init__(
          grace_period=grace_period,
          max_depth=max_depth,
          split_criterion=split_criterion,
          delta=delta,
          tau=tau,
          leaf_prediction=leaf_prediction,
          nb_threshold=nb_threshold,
          nominal_attributes=nominal_attributes,
          splitter=splitter,
          binary_split=binary_split,
          min_branch_fraction=min_branch_fraction,
          max_share_to_split=max_share_to_split,
          max_size=max_size,
          memory_estimate_period=memory_estimate_period,
          stop_mem_management=stop_mem_management,
          remove_poor_attrs=remove_poor_attrs,
          merit_preprune=merit_preprune,
      )
  
      self.max_features = max_features
      self.rng = rng
  
imports: from __future__ import annotations
  import abc
  import collections
  import copy
  import math
  import random
  import typing
  import numpy
  from river import base, metrics, stats
  from river.drift import ADWIN, NoDrift
  from river.tree.hoeffding_tree_classifier import HoeffdingTreeClassifier
  from river.tree.hoeffding_tree_regressor import HoeffdingTreeRegressor
  from river.tree.nodes.arf_htc_nodes import RandomLeafMajorityClass, RandomLeafNaiveBayes, RandomLeafNaiveBayesAdaptive
  from river.tree.nodes.arf_htr_nodes import RandomLeafAdaptive, RandomLeafMean, RandomLeafModel
  from river.tree.splitter import Splitter
  from river.utils.random import poisson
label_desc: Use image node_id 1 to create a new BaseTreeClassifier object from inherited base classes: HoeffdingTreeClassifier with example: obj = BaseTreeClassifier(max_features, grace_period, max_depth, split_criterion, delta, tau, leaf_prediction, nb_threshold, nominal_attributes, splitter, binary_split, min_branch_fraction, max_share_to_split, max_size, memory_estimate_period, stop_mem_management, remove_poor_attrs, merit_preprune, rng)