class_docstr: Performs Partial Dependence Plot (PDP) analysis for interaction between two features.
  
  Attributes
  ----------
  model : object
      A trained model object. The model should have a `predict` or
      `predict_proba` method. Otherwise a custom prediction function should be
      provided through `pred_func`.
  n_classes : int
      Number of classes. If it is None, will infer from `model.n_classes_`.
      Please set it as 0 for regression.
  pred_func : callable
      A custom prediction function. If not provided, `predict` or `predict_proba`
      method of `model` is used to generate the predictions.
  model_features : list of str
      A list of features used in model prediction.
  memory_limit : float
      The maximum proportion of memory that can be used by the calculation
      process.
  chunk_size : int
      The number of samples to predict at each iteration. -1 means all samples at
      once.
  n_jobs : int
      The number of jobs to run in parallel for computation. If set to -1, all
      CPUs are used.
  predict_kwds : dict
      Additional keyword arguments to pass to the `model`'s predict function.
  data_transformer : callable
      A function to transform the input data before prediction.
  dist_num_samples : int
      The number of samples to use for estimating the distribution of the data.
      This is used to handle large datasets by sampling a smaller subset for
      efficiency.
  plot_type : str
      The type of the plot to be generated.
  features : list
      List of column name(s) for the 2 chosen features. The length of the list
      should be strictly 2.
  feature_names : list
      List of custom names for the 2 chosen features. The length of the list
      should be strictly 2.
  pdp_isolate_objs : list of :class:`PDPIsolate`
      A list of `PDPIsolate` objects, for two features.
  n_grids : int
      The number of feature grids. For interact plot, it is the product of
      `n_grids` of two features.
  feature_grid_combos : numpy.ndarray
      A 2D array that contains the combinations of feature grids. The shape of
      the array is (n_grids, ...).
  from_model : bool
      A flag indicating if the prediction function was obtained from the model or
      was provided as input.
  target : list of int
      List of target indices. For binary and regression problems, the list will
      be just [0]. For multi-class targets, the list is the class indices.
  results : list of :class:`PDResults`
      The results of the Partial Dependence Plot (PDP) analysis. For binary and
      regression problems, the list will contain a single `PDResults` object. For
      multi-class targets, the list will contain a `PDResults` object for each
      class.
  
  Methods
  -------
  plot(**kwargs) :
      Generates the PDP plot.
class_docstr_tok: ["Performs","Partial","Dependence","Plot","(","PDP",")","analysis","for","interaction","between","two","features",".","Attributes","--","--","--","--","--","model",":","object","A","trained","model","object",".","The","model","should","have","a","`","predict","`","or","`","predict_proba","`","method",".","Otherwise","a","custom","prediction","function","should","be","provided","through","`","pred_func","`",".","n_classes",":","int","Number","of","classes",".","If","it","is","None",",","will","infer","from","`","model.n_classes_","`",".","Please","set","it","as","0","for","regression",".","pred_func",":","callable","A","custom","prediction","function",".","If","not","provided",",","`","predict","`","or","`","predict_proba","`","method","of","`","model","`","is","used","to","generate","the","predictions",".","model_features",":","list","of","str","A","list","of","features","used","in","model","prediction",".","memory_limit",":","float","The","maximum","proportion","of","memory","that","can","be","used","by","the","calculation","process",".","chunk_size",":","int","The","number","of","samples","to","predict","at","each","iteration",".","-1","means","all","samples","at","once",".","n_jobs",":","int","The","number","of","jobs","to","run","in","parallel","for","computation",".","If","set","to","-1",",","all","CPUs","are","used",".","predict_kwds",":","dict","Additional","keyword","arguments","to","pass","to","the","`","model","`","'s","predict","function",".","data_transformer",":","callable","A","function","to","transform","the","input","data","before","prediction",".","dist_num_samples",":","int","The","number","of","samples","to","use","for","estimating","the","distribution","of","the","data",".","This","is","used","to","handle","large","datasets","by","sampling","a","smaller","subset","for","efficiency",".","plot_type",":","str","The","type","of","the","plot","to","be","generated",".","features",":","list","List","of","column","name","(","s",")","for","the","2","chosen","features",".","The","length","of","the","list","should","be","strictly","2.","feature_names",":","list","List","of","custom","names","for","the","2","chosen","features",".","The","length","of","the","list","should","be","strictly","2.","pdp_isolate_objs",":","list","of",":","class",":","`","PDPIsolate","`","A","list","of","`","PDPIsolate","`","objects",",","for","two","features",".","n_grids",":","int","The","number","of","feature","grids",".","For","interact","plot",",","it","is","the","product","of","`","n_grids","`","of","two","features",".","feature_grid_combos",":","numpy.ndarray","A","2D","array","that","contains","the","combinations","of","feature","grids",".","The","shape","of","the","array","is","(","n_grids",",","...",")",".","from_model",":","bool","A","flag","indicating","if","the","prediction","function","was","obtained","from","the","model","or","was","provided","as","input",".","target",":","list","of","int","List","of","target","indices",".","For","binary","and","regression","problems",",","the","list","will","be","just","[","0","]",".","For","multi-class","targets",",","the","list","is","the","class","indices",".","results",":","list","of",":","class",":","`","PDResults","`","The","results","of","the","Partial","Dependence","Plot","(","PDP",")","analysis",".","For","binary","and","regression","problems",",","the","list","will","contain","a","single","`","PDResults","`","object",".","For","multi-class","targets",",","the","list","will","contain","a","`","PDResults","`","object","for","each","class",".","Methods","--","--","--","-","plot","(","*","*","kwargs",")",":","Generates","the","PDP","plot","."]
code: def _get_grid_combos(self):
      grids = [obj.feature_info.grids for obj in self.pdp_isolate_objs]
      types = [obj.feature_info.type for obj in self.pdp_isolate_objs]
      for i, grid in enumerate(grids):
          if types[i] == "onehot":
              grids[i] = np.eye(len(grid)).astype(int).tolist()
  
      grid_combos = []
      for g1 in grids[0]:
          for g2 in grids[1]:
              grid_combos.append(_make_list(g1) + _make_list(g2))
  
      return np.array(grid_combos)
  
imports: from .pdp_utils import PDPIsolatePlotEngine, PDPInteractPlotEngine
  from .utils import _check_frac_to_plot, _make_list, _check_classes, _calc_n_jobs, FeatureInfo, _check_model, _calc_preds, _expand_params_for_interact, _check_dataset, _check_cluster_params, _check_plot_engine, _check_pdp_interact_plot_type
  import pandas
  import numpy
  from pqdm.processes import pqdm
  from tqdm.auto import tqdm
  import warnings
label_desc: Use image node_id 3 for calling the PDPInteract obj's underlying member method code with example usage: obj._get_grid_combos() and returns: np