class_docstr: Standardize Y, separately for each metric.
  
  Transform is done in-place.
class_docstr_tok: ["Standardize","Y",",","separately","for","each","metric",".","Transform","is","done","in-place","."]
code: def __init__(
      self,
      search_space: Optional[SearchSpace] = None,
      observations: Optional[List[Observation]] = None,
      modelbridge: Optional["base_modelbridge.ModelBridge"] = None,
      config: Optional[TConfig] = None,
  ) -> None:
      if observations is None or len(observations) == 0:
          raise DataRequiredError(
              "`StandardizeY` transform requires non-empty data."
          )
      observation_data = [obs.data for obs in observations]
      Ys = get_data(observation_data=observation_data)
      # Compute means and SDs
      # pyre-fixme[6]: Expected `DefaultDict[Union[str, Tuple[str, Optional[Union[b...
      # pyre-fixme[4]: Attribute must be annotated.
      self.Ymean, self.Ystd = compute_standardization_parameters(Ys)
  
imports: from logging import Logger
  from typing import DefaultDict, Dict, List, Optional, Tuple, TYPE_CHECKING, Union
  import numpy
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.outcome_constraint import OutcomeConstraint, ScalarizedOutcomeConstraint
  from ax.core.search_space import SearchSpace
  from ax.core.types import TParamValue
  from ax.exceptions.core import DataRequiredError
  from ax.modelbridge.transforms.base import Transform
  from ax.modelbridge.transforms.utils import get_data
  from ax.models.types import TConfig
  from ax.utils.common.logger import get_logger
label_desc: Use image node_id 1 to create a new StandardizeY object from inherited base classes: Transform with example: obj = StandardizeY(search_space, observations, modelbridge, config)