class_docstr: Scales the data to a [-1, 1] range based on absolute maximum.
  
  Under the hood a running absolute max is maintained. This scaler is meant for
  data that is already centered at zero or sparse data. It does not shift/center
  the data, and thus does not destroy any sparsity.
  
  Attributes
  ----------
  abs_max : dict
      Mapping between features and instances of `stats.AbsMax`.
  
  Examples
  --------
  
  >>> import random
  >>> from river import preprocessing
  
  >>> random.seed(42)
  >>> X = [{'x': random.uniform(8, 12)} for _ in range(5)]
  >>> for x in X:
  ...     print(x)
  {'x': 10.557707}
  {'x': 8.100043}
  {'x': 9.100117}
  {'x': 8.892842}
  {'x': 10.945884}
  
  >>> scaler = preprocessing.MaxAbsScaler()
  
  >>> for x in X:
  ...     scaler.learn_one(x)
  ...     print(scaler.transform_one(x))
  {'x': 1.0}
  {'x': 0.767216}
  {'x': 0.861940}
  {'x': 0.842308}
  {'x': 1.0}
class_docstr_tok: ["Scales","the","data","to","a","[","-1",",","1","]","range","based","on","absolute","maximum",".","Under","the","hood","a","running","absolute","max","is","maintained",".","This","scaler","is","meant","for","data","that","is","already","centered","at","zero","or","sparse","data",".","It","does","not","shift\/center","the","data",",","and","thus","does","not","destroy","any","sparsity",".","Attributes","--","--","--","--","--","abs_max",":","dict","Mapping","between","features","and","instances","of","`","stats.AbsMax","`",".","Examples","--","--","--","--",">",">",">","import","random",">",">",">","from","river","import","preprocessing",">",">",">","random.seed","(","42",")",">",">",">","X","=","[","{","'","x","'",":","random.uniform","(","8",",","12",")","}","for","_","in","range","(","5",")","]",">",">",">","for","x","in","X",":","...","print","(","x",")","{","'","x","'",":","10.557707","}","{","'","x","'",":","8.100043","}","{","'","x","'",":","9.100117","}","{","'","x","'",":","8.892842","}","{","'","x","'",":","10.945884","}",">",">",">","scaler","=","preprocessing.MaxAbsScaler","(",")",">",">",">","for","x","in","X",":","...","scaler.learn_one","(","x",")","...","print","(","scaler.transform_one","(","x",")",")","{","'","x","'",":","1.0","}","{","'","x","'",":","0.767216","}","{","'","x","'",":","0.861940","}","{","'","x","'",":","0.842308","}","{","'","x","'",":","1.0","}"]
code: def __init__(self):
      self.abs_max = collections.defaultdict(stats.AbsMax)
  
imports: from __future__ import annotations
  import collections
  import functools
  import itertools
  import numbers
  import numpy
  import pandas
  from river import base, stats, utils
label_desc: Use image node_id 1 to create a new MaxAbsScaler object from inherited base classes: base with example: obj = MaxAbsScaler()