class_docstr: A model bridge for using models based on discrete parameters.
  
  Requires that all parameters have been transformed to ChoiceParameters.
class_docstr_tok: ["A","model","bridge","for","using","models","based","on","discrete","parameters",".","Requires","that","all","parameters","have","been","transformed","to","ChoiceParameters","."]
code: def _predict(
      self, observation_features: List[ObservationFeatures]
  ) -> List[ObservationData]:
      # Convert observations to array
      X = [
          [of.parameters[param] for param in self.parameters]
          for of in observation_features
      ]
      f, cov = self.model.predict(X=X)
      # Convert arrays to observations
      return array_to_observation_data(
          f=f, cov=cov, outcomes=self.outcomes
      )
  
imports: from typing import Dict, List, Optional, Set, Tuple
  from ax.core.observation import Observation, ObservationData, ObservationFeatures, separate_observations
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.parameter import ChoiceParameter, FixedParameter
  from ax.core.search_space import SearchSpace
  from ax.core.types import TParamValueList
  from ax.exceptions.core import UserInputError
  from ax.modelbridge.base import GenResults, ModelBridge
  from ax.modelbridge.modelbridge_utils import array_to_observation_data, get_fixed_features
  from ax.modelbridge.torch import extract_objective_weights, extract_outcome_constraints, validate_optimization_config
  from ax.models.discrete_base import DiscreteModel
  from ax.models.types import TConfig
label_desc: Use image node_id 2 for calling the DiscreteModelBridge obj's underlying member method code with example usage: obj._predict(observation_features) and returns: array_to_observation_data