class_docstr: Rescale each feature individually to range [-1, 1] by dividing through the largest maximum
  absolute value in each feature. It does not shift/center the data, and thus does not destroy
  any sparsity.
  
  .. versionadded:: 3.5.0
  
  Examples
  --------
  >>> from pyspark.ml.connect.feature import MaxAbsScaler
  >>> scaler = MaxAbsScaler(inputCol='features', outputCol='scaled_features')
  >>> dataset = spark.createDataFrame([
  ...     ([1.0, 2.0],),
  ...     ([2.0, -1.0],),
  ...     ([-3.0, -2.0],),
  ... ], schema=['features'])
  >>> scaler_model = scaler.fit(dataset)
  >>> transformed_dataset = scaler_model.transform(dataset)
  >>> transformed_dataset.show(truncate=False)
  +------------+--------------------------+
  |features    |scaled_features           |
  +------------+--------------------------+
  |[1.0, 2.0]  |[0.3333333333333333, 1.0] |
  |[2.0, -1.0] |[0.6666666666666666, -0.5]|
  |[-3.0, -2.0]|[-1.0, -1.0]              |
  +------------+--------------------------+
class_docstr_tok: ["Rescale","each","feature","individually","to","range","[","-1",",","1","]","by","dividing","through","the","largest","maximum","absolute","value","in","each","feature",".","It","does","not","shift\/center","the","data",",","and","thus","does","not","destroy","any","sparsity",".","..","versionadded",":",":","3.5.0","Examples","--","--","--","--",">",">",">","from","pyspark.ml.connect.feature","import","MaxAbsScaler",">",">",">","scaler","=","MaxAbsScaler","(","inputCol='features","'",",","outputCol='scaled_features","'",")",">",">",">","dataset","=","spark.createDataFrame","(","[","...","(","[","1.0",",","2.0","]",",",")",",","...","(","[","2.0",",","-1.0","]",",",")",",","...","(","[","-3.0",",","-2.0","]",",",")",",","...","]",",","schema=","[","'features","'","]",")",">",">",">","scaler_model","=","scaler.fit","(","dataset",")",">",">",">","transformed_dataset","=","scaler_model.transform","(","dataset",")",">",">",">","transformed_dataset.show","(","truncate=False",")","+","--","--","--","--","--","--","+","--","--","--","--","--","--","--","--","--","--","--","--","--","+","|features","|scaled_features","|","+","--","--","--","--","--","--","+","--","--","--","--","--","--","--","--","--","--","--","--","--","+","|","[","1.0",",","2.0","]","|","[","0.3333333333333333",",","1.0","]","|","|","[","2.0",",","-1.0","]","|","[","0.6666666666666666",",","-0.5","]","|","|","[","-3.0",",","-2.0","]","|","[","-1.0",",","-1.0","]","|","+","--","--","--","--","--","--","+","--","--","--","--","--","--","--","--","--","--","--","--","--","+"]
code: def _fit(
      self, dataset: Union["pd.DataFrame", "DataFrame"]
  ) -> "MaxAbsScalerModel":
      input_col = self.getInputCol()
  
      stat_res = summarize_dataframe(
          dataset, input_col, ["min", "max", "count"]
      )
      min_values = stat_res["min"]
      max_values = stat_res["max"]
      n_samples_seen = stat_res["count"]
  
      max_abs_values = np.maximum(
          np.abs(min_values), np.abs(max_values)
      )
  
      model = MaxAbsScalerModel(max_abs_values, n_samples_seen)
      model._resetUid(self.uid)
      return self._copyValues(model)
  
imports: import pickle
  from typing import Any, Union, List, Tuple, Callable, Dict, Optional
  import numpy
  import pandas
  from pyspark import keyword_only
  from pyspark.sql import DataFrame
  from pyspark.ml.param.shared import HasInputCol, HasInputCols, HasOutputCol, HasFeatureSizes, HasHandleInvalid, Param, Params, TypeConverters
  from pyspark.ml.connect.base import Estimator, Model, Transformer
  from pyspark.ml.connect.io_utils import ParamsReadWrite, CoreModelReadWrite
  from pyspark.ml.connect.summarizer import summarize_dataframe
label_desc: Use image node_id 2 for calling the MaxAbsScaler obj's underlying member method code with example usage: obj._fit(dataset) and returns: self