class_docstr: This class defines the interface for any surrogate model which attempts to
  predict performance metrics from model configurations.
  
  Subclasses may decide to only predict some performance metrics.
class_docstr_tok: ["This","class","defines","the","interface","for","any","surrogate","model","which","attempts","to","predict","performance","metrics","from","model","configurations",".","Subclasses","may","decide","to","only","predict","some","performance","metrics","."]
docstr: Args:
      tracker: A tracker that can be used to impute latency and number of model parameters
          into model performances. Also, it is required for some input features.
      predict: The metrics to predict. All if not provided.
      output_normalization: The type of normalization to apply to the features of each
          dataset independently. `None` applies no normalization, "quantile" applies quantile
          normalization, and "standard" transforms data to have zero mean and unit variance.
      impute_simulatable: Whether the tracker should impute latency and number of model
          parameters into the returned performance object.
docstr_tok: ["Args",":","tracker",":","A","tracker","that","can","be","used","to","impute","latency","and","number","of","model","parameters","into","model","performances",".","Also",",","it","is","required","for","some","input","features",".","predict",":","The","metrics","to","predict",".","All","if","not","provided",".","output_normalization",":","The","type","of","normalization","to","apply","to","the","features","of","each","dataset","independently",".","`","None","`","applies","no","normalization",",","``","quantile","''","applies","quantile","normalization",",","and","``","standard","''","transforms","data","to","have","zero","mean","and","unit","variance",".","impute_simulatable",":","Whether","the","tracker","should","impute","latency","and","number","of","model","parameters","into","the","returned","performance","object","."]
code: def __init__(
      self,
      tracker: Tracker[T],
      predict: list[str] | None = None,
      output_normalization: OutputNormalization = None,
      impute_simulatable: bool = False,
  ):
      """
      Args:
          tracker: A tracker that can be used to impute latency and number of model parameters
              into model performances. Also, it is required for some input features.
          predict: The metrics to predict. All if not provided.
          output_normalization: The type of normalization to apply to the features of each
              dataset independently. `None` applies no normalization, "quantile" applies quantile
              normalization, and "standard" transforms data to have zero mean and unit variance.
          impute_simulatable: Whether the tracker should impute latency and number of model
              parameters into the returned performance object.
      """
      self.performance_transformer = PerformanceTransformer(
          metrics=predict
      )
      self.output_normalization = output_normalization
      self.impute_simulatable = impute_simulatable
      self.tracker = tracker
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from typing import Generic, List, Literal, Optional, TypeVar
  import numpy
  import numpy.typing
  from sklearn.preprocessing import LabelEncoder, QuantileTransformer, StandardScaler
  from tsbench.config import Config, EnsembleConfig, ModelConfig
  from tsbench.evaluations.metrics import Performance
  from tsbench.evaluations.tracking import Tracker
  from .transformers import PerformanceTransformer
label_desc: Use image node_id 1 to create a new Surrogate object from inherited base classes: ABC, Generic with example: obj = Surrogate(tracker, predict, output_normalization, impute_simulatable)