docstr: Initialize explainer as a `KernelExplainerWrapper` or as a `DistributedExplainer`. 
code: def _init_shap_object(
      self,
  ) -> Union[KernelExplainerWrapper, "DistributedExplainer"]:
      """Initialize explainer as a `KernelExplainerWrapper` or as a `DistributedExplainer`."""
      explainer_args = (self.predictor, self.background_data)
      explainer_kwargs: Dict[str, Union[str, int, None]] = {
          "link": self.link
      }
  
      # distribute computation
      if self.distribute:
          # set seed for each process
          explainer_kwargs["seed"] = self.seed
          return DistributedExplainer(
              self.distributed_opts,
              KernelExplainerWrapper,
              explainer_args,
              explainer_kwargs,
          )
  
      return KernelExplainerWrapper(*explainer_args, **explainer_kwargs)
  
imports: import copy
  import logging
  from functools import partial
  from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
  import numpy
  import pandas
  import shap
  import shap.utils._legacy
  from scipy import sparse
  from scipy.special import expit
  from shap import KernelExplainer
  from alibi.api.defaults import DEFAULT_DATA_KERNEL_SHAP, DEFAULT_DATA_TREE_SHAP, DEFAULT_META_KERNEL_SHAP, DEFAULT_META_TREE_SHAP
  from alibi.api.interfaces import Explainer, Explanation, FitMixin
  from alibi.utils.wrappers import methdispatch
label_desc: Use image node_id 11 for calling the KernelShap obj's underlying member method code with example usage: obj._init_shap_object() and returns: KernelExplainerWrapper, DistributedExplainer