code: def _make_unpartitioned_stats_method(self) -> Callable:
      assert isinstance(self.per_group_stats, Dict)
  
      min_actual_value = self.per_group_stats[
          LinearScalarScalerConfig.min_actual_value_token
      ]
      max_actual_value = self.per_group_stats[
          LinearScalarScalerConfig.max_actual_value_token
      ]
  
      delta = max_actual_value - min_actual_value
  
      a = (
          (self.max_required_value - self.min_required_value) / delta
          if delta != 0.0
          else 0.0
      )
      b = (
          self.max_required_value - a * max_actual_value
          if delta != 0.0
          else (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 3 for calling the LinearScalarScalerModel obj's underlying member method code with example usage: obj._make_unpartitioned_stats_method() and returns: norm, unknown