code: def _make_partitioned_stats_method(self) -> Callable:
      req_delta = self.max_required_value - self.min_required_value
  
      def actual_delta():
          return f.col(
              LinearScalarScalerConfig.max_actual_value_token
          ) - f.col(
              LinearScalarScalerConfig.min_actual_value_token,
          )
  
      def a():
          return f.when(
              actual_delta() != f.lit(0),
              f.lit(req_delta) / actual_delta(),
          ).otherwise(f.lit(0.0))
  
      def b():
          return f.when(
              actual_delta() != f.lit(0),
              self.max_required_value
              - a()
              * f.col(LinearScalarScalerConfig.max_actual_value_token),
          ).otherwise(
              f.lit(
                  (self.min_required_value + self.max_required_value)
                  / 2.0
              ),
          )
  
      def norm(x):
          return a() * x + b()
  
      return norm
  
imports: from abc import ABC, abstractmethod
  from typing import Callable, Dict, List, Optional, Union
  from synapse.ml.cyber.utils.spark_utils import ExplainBuilder, HasSetInputCol, HasSetOutputCol
  from pyspark.ml import Estimator, Transformer
  from pyspark.ml.param.shared import HasInputCol, HasOutputCol, Param, Params
  from pyspark.sql import DataFrame, functions, types
label_desc: Use image node_id 2 for calling the LinearScalarScalerModel obj's underlying member method code with example usage: obj._make_partitioned_stats_method() and returns: norm, unknown, f, f, unknown