code: def _fit(self, df: DataFrame) -> IdIndexerModel:
      return IdIndexerModel(
          self.input_col,
          self.partition_key,
          self.output_col,
          self._make_vocab_df(df).cache(),
      )
  
imports: from typing import List
  from synapse.ml.cyber.utils.spark_utils import DataFrameUtils, 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
label_desc: Use image node_id 3 for calling the IdIndexer obj's underlying member method code with example usage: obj._fit(df) and returns: IdIndexerModel