code: def __init__(
      self,
      input_col: str,
      partition_key: Optional[str],
      output_col: str,
      per_group_stats: Union[DataFrame, Dict[str, float]],
      min_required_value: float,
      max_required_value: float,
      use_pandas: bool = True,
  ):
      super().__init__(
          input_col,
          partition_key,
          output_col,
          per_group_stats,
          use_pandas,
      )
      self.min_required_value = min_required_value
      self.max_required_value = max_required_value
  
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 1 to create a new LinearScalarScalerModel object from inherited base classes: PerPartitionScalarScalerModel with example: obj = LinearScalarScalerModel(input_col, partition_key, output_col, per_group_stats, min_required_value, max_required_value, use_pandas)