Abstract class for preparing data in order to train a surrogate model.
Parameters
scenario : Scenario object.
considered_states : list[StatusType], defaults to [StatusType.SUCCESS, StatusType.CRASHED, StatusType.MEMORYOUT]  # noqa: E501
    Trials with the passed states are considered.
lower_budget_states : list[StatusType], defaults to []
    Additionally consider all trials with these states for budget < current budget.
scale_percentage : int, defaults to 5
    Scaled y-transformation use a percentile to estimate distance to optimum. Only used in some sub-classes.
seed : int | None, defaults to none
Raises
TypeError
    If no success states are given.
                  
                    Source code in smac/runhistory/encoder/abstract_encoder.py
                    |  | def __init__(
    self,
    scenario: Scenario,
    considered_states: list[StatusType] = None,
    lower_budget_states: list[StatusType] = None,
    scale_percentage: int = 5,
    seed: int | None = None,
) -> None:
    if considered_states is None:
        considered_states = [
            StatusType.SUCCESS,
            StatusType.CRASHED,
            StatusType.MEMORYOUT,
        ]
    if seed is None:
        seed = scenario.seed
    self._seed = seed
    self._rng = np.random.RandomState(seed)
    self._scale_percentage = scale_percentage
    self._n_objectives = scenario.count_objectives()
    self._algorithm_walltime_limit = scenario.trial_walltime_limit
    self._lower_budget_states = lower_budget_states if lower_budget_states is not None else []
    self._considered_states = considered_states
    self._instances = scenario.instances
    self._instance_features = scenario.instance_features
    self._n_features = scenario.count_instance_features()
    self._n_params = len(list(scenario.configspace.values()))
    if self._instances is not None and self._n_features == 0:
        logger.warning(
            "We strongly encourage to use instance features when using instances.",
            "If no instance features are passed, the runhistory encoder can not distinguish between different "
            "instances and therefore returns the same data points with different values, all of which are "
            "used to train the surrogate model.\n"
            "Consider using instance indices as features.",
        )
    # Learned statistics
    self._min_y = np.array([np.nan] * self._n_objectives)
    self._max_y = np.array([np.nan] * self._n_objectives)
    self._percentile = np.array([np.nan] * self._n_objectives)
    self._multi_objective_algorithm: AbstractMultiObjectiveAlgorithm | None = None
    self._runhistory: RunHistory | None = None
 | 
 
  
property
  
    
        Returns the meta-data of the created object.
Returns
dict[str, Any]: meta-data of the created object: name, considered states, lower budget
states, scale_percentage, seed.
     
 
property
      writable
  
    
        The multi objective algorithm used to transform the data.
     
 
property
      writable
  
    
        The RunHistory used to transform the data.
     
 
get_configurations(
    budget_subset: list | None = None,
) -> ndarray
        Returns vector representation of the configurations.
Warning
Instance features are not
appended and cost values are not taken into account.
Parameters
budget_subset : list[int|float] | None, defaults to none
    List of budgets to consider.
Returns
configs_array : np.ndarray
            
              Source code in smac/runhistory/encoder/abstract_encoder.py
              |  | def get_configurations(
    self,
    budget_subset: list | None = None,
) -> np.ndarray:
    """Returns vector representation of the configurations.
    Warning
    -------
    Instance features are not
    appended and cost values are not taken into account.
    Parameters
    ----------
    budget_subset : list[int|float] | None, defaults to none
        List of budgets to consider.
    Returns
    -------
    configs_array : np.ndarray
    """
    s_trials = self._get_considered_trials(budget_subset)
    s_config_ids = set(s_trial.config_id for s_trial in s_trials)
    t_trials = self._get_timeout_trials(budget_subset)
    t_config_ids = set(t_trial.config_id for t_trial in t_trials)
    config_ids = s_config_ids | t_config_ids
    configurations = [self.runhistory._ids_config[config_id] for config_id in config_ids]
    configs_array = convert_configurations_to_array(configurations)
    return configs_array
 | 
 
     
 
    
        Returns a vector representation of the RunHistory.
Parameters
budget_subset : list | None, defaults to none
    List of budgets to consider.
Returns
X : np.ndarray
    Configuration vector and instance features.
Y : np.ndarray
    Cost values.
            
              Source code in smac/runhistory/encoder/abstract_encoder.py
              |  | def transform(
    self,
    budget_subset: list | None = None,
) -> tuple[np.ndarray, np.ndarray]:
    """Returns a vector representation of the RunHistory.
    Parameters
    ----------
    budget_subset : list | None, defaults to none
        List of budgets to consider.
    Returns
    -------
    X : np.ndarray
        Configuration vector and instance features.
    Y : np.ndarray
        Cost values.
    """
    logger.debug("Transforming RunHistory into X, y format...")
    considered_trials = self._get_considered_trials(budget_subset)
    X, Y = self._build_matrix(trials=considered_trials, store_statistics=True)
    # Get real TIMEOUT runs
    timeout_trials = self._get_timeout_trials(budget_subset)
    # Use penalization (e.g. PAR10) for EPM training
    store_statistics = True if np.any(np.isnan(self._min_y)) else False
    tX, tY = self._build_matrix(trials=timeout_trials, store_statistics=store_statistics)
    # If we don't have successful runs, we have to return all timeout runs
    if not considered_trials:
        return tX, tY
    # If we do not impute, we also return TIMEOUT data
    X = np.vstack((X, tX))
    Y = np.concatenate((Y, tY))
    logger.debug("Converted %d observations." % (X.shape[0]))
    return X, Y
 | 
 
     
 
abstractmethod
  
    
        Transform function response values.
Parameters
values : np.ndarray
    Response values to be transformed.
Returns
transformed_values : np.ndarray
            
              Source code in smac/runhistory/encoder/abstract_encoder.py
              |  | @abstractmethod
def transform_response_values(
    self,
    values: np.ndarray,
) -> np.ndarray:
    """Transform function response values.
    Parameters
    ----------
    values : np.ndarray
        Response values to be transformed.
    Returns
    -------
    transformed_values : np.ndarray
    """
    raise NotImplementedError
 |