code: def _preprocess_BOXCOX(
      self,
      begin_index: int,
      input: torch.Tensor,
      norm_params: List[NormalizationParameters],
  ) -> torch.Tensor:
      shifts = self._fetch_parameter(begin_index, "shifts")
      lambdas = self._fetch_parameter(begin_index, "lambdas")
      boxcox_output = (
          # We can replace this with a normal pow() call after D8528654 lands
          torch.pow(
              torch.clamp(
                  input + shifts, 1e-6
              ),  # Clamp is necessary to prevent MISSING_VALUE from going to NaN
              lambdas,
          )
          - self.one_tensor
      ) / lambdas
      return self._preprocess_CONTINUOUS(
          begin_index, boxcox_output, norm_params
      )
  
imports: import logging
  from typing import cast, Dict, List, Optional, Tuple
  import torch
  from reagent.core.parameters import NormalizationParameters
  from reagent.preprocessing.identify_types import DO_NOT_PREPROCESS, ENUM, FEATURE_TYPES
  from reagent.preprocessing.normalization import EPS, MAX_FEATURE_VALUE, MIN_FEATURE_VALUE
  from torch.nn import Module, Parameter
label_desc: Use image node_id 21 for calling the Preprocessor obj's underlying member method code with example usage: obj._preprocess_BOXCOX(begin_index, input, norm_params) and returns: self