class_docstr: Incremental Structured Output Prediction Tree (iSOUP-Tree) for multi-target regression.
  
  This is an implementation of the iSOUP-Tree proposed by A. Osojnik, P. Panov, and
  S. Džeroski [^1].
  
  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.
  delta
      Allowed error in split decision, a value closer to 0 takes longer to
      decide.
  tau
      Threshold below which a split will be forced to break ties.
  leaf_prediction
      Prediction mechanism used at leafs.</br>
      - 'mean' - Target mean</br>
      - 'model' - Uses the model defined in `leaf_model`</br>
      - 'adaptive' - Chooses between 'mean' and 'model' dynamically</br>
  leaf_model
      The regression model(s) used to provide responses if `leaf_prediction='model'`. It can
      be either a regressor (in which case it is going to be replicated to all the targets)
      or a dictionary whose keys are target identifiers, and the values are instances of
      `river.base.Regressor.` If not provided, instances of `river.linear_model.LinearRegression`
      with the default hyperparameters are used for all the targets. If a dictionary is passed
      and not all target models are specified, copies from the first model match in the
      dictionary will be used to the remaining targets.
  model_selector_decay
      The exponential decaying factor applied to the learning models' squared errors, that
      are monitored if `leaf_prediction='adaptive'`. Must be between `0` and `1`. The closer
      to `1`, the more importance is going to be given to past observations. On the other hand,
      if its value approaches `0`, the recent observed errors are going to have more influence
      on the final decision.
  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.TEBSTSplitter` is used if `splitter` is `None`.
  min_samples_split
      The minimum number of samples every branch resulting from a split candidate must have
      to be considered valid.
  binary_split
      If True, only allow binary splits.
  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.
  
  References
  ----------
  [^1]: Aljaž Osojnik, Panče Panov, and Sašo Džeroski. "Tree-based methods for online
      multi-target regression." Journal of Intelligent Information Systems 50.2 (2018): 315-339.
  
  Examples
  --------
  
  >>> import numbers
  >>> from river import compose
  >>> from river import datasets
  >>> from river import evaluate
  >>> from river import linear_model
  >>> from river import metrics
  >>> from river import preprocessing
  >>> from river import tree
  
  >>> dataset = datasets.SolarFlare()
  
  >>> num = compose.SelectType(numbers.Number) | preprocessing.MinMaxScaler()
  >>> cat = compose.SelectType(str) | preprocessing.OneHotEncoder()
  
  >>> model = tree.iSOUPTreeRegressor(
  ...     grace_period=100,
  ...     leaf_prediction='model',
  ...     leaf_model={
  ...         'c-class-flares': linear_model.LinearRegression(l2=0.02),
  ...         'm-class-flares': linear_model.PARegressor(),
  ...         'x-class-flares': linear_model.LinearRegression(l2=0.1)
  ...     }
  ... )
  
  >>> pipeline = (num + cat) | model
  >>> metric = metrics.multioutput.MicroAverage(metrics.MAE())
  
  >>> evaluate.progressive_val_score(dataset, pipeline, metric)
  MicroAverage(MAE): 0.426177
class_docstr_tok: ["Incremental","Structured","Output","Prediction","Tree","(","iSOUP-Tree",")","for","multi-target","regression",".","This","is","an","implementation","of","the","iSOUP-Tree","proposed","by","A.","Osojnik",",","P.","Panov",",","and","S.","D\u017eeroski","[","^1","]",".","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",".","delta","Allowed","error","in","split","decision",",","a","value","closer","to","0","takes","longer","to","decide",".","tau","Threshold","below","which","a","split","will","be","forced","to","break","ties",".","leaf_prediction","Prediction","mechanism","used","at","leafs.","<","\/br",">","-","'mean","'","-","Target","mean","<","\/br",">","-","'model","'","-","Uses","the","model","defined","in","`","leaf_model","`","<","\/br",">","-","'adaptive","'","-","Chooses","between","'mean","'","and","'model","'","dynamically","<","\/br",">","leaf_model","The","regression","model","(","s",")","used","to","provide","responses","if","`","leaf_prediction='model","'","`",".","It","can","be","either","a","regressor","(","in","which","case","it","is","going","to","be","replicated","to","all","the","targets",")","or","a","dictionary","whose","keys","are","target","identifiers",",","and","the","values","are","instances","of","`","river.base.Regressor.","`","If","not","provided",",","instances","of","`","river.linear_model.LinearRegression","`","with","the","default","hyperparameters","are","used","for","all","the","targets",".","If","a","dictionary","is","passed","and","not","all","target","models","are","specified",",","copies","from","the","first","model","match","in","the","dictionary","will","be","used","to","the","remaining","targets",".","model_selector_decay","The","exponential","decaying","factor","applied","to","the","learning","models","'","squared","errors",",","that","are","monitored","if","`","leaf_prediction='adaptive","'","`",".","Must","be","between","`","0","`","and","`","1","`",".","The","closer","to","`","1","`",",","the","more","importance","is","going","to","be","given","to","past","observations",".","On","the","other","hand",",","if","its","value","approaches","`","0","`",",","the","recent","observed","errors","are","going","to","have","more","influence","on","the","final","decision",".","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.TEBSTSplitter","`","is","used","if","`","splitter","`","is","`","None","`",".","min_samples_split","The","minimum","number","of","samples","every","branch","resulting","from","a","split","candidate","must","have","to","be","considered","valid",".","binary_split","If","True",",","only","allow","binary","splits",".","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",".","References","--","--","--","--","--","[","^1","]",":","Alja\u017e","Osojnik",",","Pan\u010de","Panov",",","and","Sa\u0161o","D\u017eeroski",".","``","Tree-based","methods","for","online","multi-target","regression",".","''","Journal","of","Intelligent","Information","Systems","50.2","(","2018",")",":","315-339",".","Examples","--","--","--","--",">",">",">","import","numbers",">",">",">","from","river","import","compose",">",">",">","from","river","import","datasets",">",">",">","from","river","import","evaluate",">",">",">","from","river","import","linear_model",">",">",">","from","river","import","metrics",">",">",">","from","river","import","preprocessing",">",">",">","from","river","import","tree",">",">",">","dataset","=","datasets.SolarFlare","(",")",">",">",">","num","=","compose.SelectType","(","numbers.Number",")","|","preprocessing.MinMaxScaler","(",")",">",">",">","cat","=","compose.SelectType","(","str",")","|","preprocessing.OneHotEncoder","(",")",">",">",">","model","=","tree.iSOUPTreeRegressor","(","...","grace_period=100",",","...","leaf_prediction='model","'",",","...","leaf_model=","{","...","'","c-class-flares","'",":","linear_model.LinearRegression","(","l2=0.02",")",",","...","'m-class-flares","'",":","linear_model.PARegressor","(",")",",","...","'","x-class-flares","'",":","linear_model.LinearRegression","(","l2=0.1",")","...","}","...",")",">",">",">","pipeline","=","(","num","+","cat",")","|","model",">",">",">","metric","=","metrics.multioutput.MicroAverage","(","metrics.MAE","(",")",")",">",">",">","evaluate.progressive_val_score","(","dataset",",","pipeline",",","metric",")","MicroAverage","(","MAE",")",":","0.426177"]
code: def _new_split_criterion(self):
      return IntraClusterVarianceReductionSplitCriterion(
          min_samples_split=self.min_samples_split
      )
  
file_path: river/river/tree/isoup_tree_regressor.py
imports: from __future__ import annotations
  from copy import deepcopy
  from river import base, tree
  from .nodes.branch import DTBranch
  from .nodes.isouptr_nodes import LeafAdaptiveMultiTarget, LeafMeanMultiTarget, LeafModelMultiTarget
  from .split_criterion import IntraClusterVarianceReductionSplitCriterion
  from .splitter import Splitter
label_desc: Use image node_id 4 for calling the iSOUPTreeRegressor obj's underlying member method code with example usage: obj._new_split_criterion() and returns: IntraClusterVarianceReductionSplitCriterion