docstr: Computes the PD and ICE.
  
  Parameters
  ----------
  grid
      Cartesian product between feature values. Covers also the case of a single feature.
  features
      Feature column indices.
  X
      See :py:meth:`alibi.explainers.partial_dependence.PartialDependenceBase.explain`.
  
  Returns
  -------
  Tuple consisting of the PD and optionally the ICE.
docstr_tok: ["Computes","the","PD","and","ICE",".","Parameters","--","--","--","--","--","grid","Cartesian","product","between","feature","values",".","Covers","also","the","case","of","a","single","feature",".","features","Feature","column","indices",".","X","See",":","py",":","meth",":","`","alibi.explainers.partial_dependence.PartialDependenceBase.explain","`",".","Returns","--","--","--","-","Tuple","consisting","of","the","PD","and","optionally","the","ICE","."]
code: def _compute_pd(
      self, grid: np.ndarray, features: np.ndarray, X: np.ndarray
  ) -> Tuple[np.ndarray, Optional[np.ndarray]]:
      """
      Computes the PD and ICE.
  
      Parameters
      ----------
      grid
          Cartesian product between feature values. Covers also the case of a single feature.
      features
          Feature column indices.
      X
          See :py:meth:`alibi.explainers.partial_dependence.PartialDependenceBase.explain`.
  
      Returns
      -------
      Tuple consisting of the PD and optionally the ICE.
      """
      raise NotImplementedError()
  
imports: import copy
  import logging
  import math
  import numbers
  import sys
  from abc import ABC, abstractmethod
  from enum import Enum
  from typing import Callable, Dict, Iterable, List, Optional, Tuple, Union, no_type_check
  import matplotlib.pyplot
  import numpy
  from scipy.stats.mstats import mquantiles
  from sklearn.base import BaseEstimator, is_classifier, is_regressor
  from sklearn.ensemble import RandomForestRegressor
  from sklearn.ensemble._gb import BaseGradientBoosting
  from sklearn.ensemble._hist_gradient_boosting.gradient_boosting import BaseHistGradientBoosting
  from sklearn.tree import DecisionTreeRegressor
  from sklearn.utils.extmath import cartesian
  from sklearn.utils.validation import check_is_fitted
  from tqdm import tqdm
  from alibi.api.defaults import DEFAULT_DATA_PD, DEFAULT_META_PD
  from alibi.api.interfaces import Explainer, Explanation
  from alibi.explainers.ale import get_quantiles
  from alibi.utils import _get_options_string
label_desc: Use image node_id 6 for calling the PartialDependenceBase obj's underlying member method code with example usage: obj._compute_pd(grid, features, X) without return types