docstr: Builds a model (using X to predict estimated/actual tau), and then calculates shapley values.
  Args:
      X (np.matrix or np.array or pd.Dataframe): a feature matrix
      tau (np.array): a treatment effect vector (estimated/actual)
      model_tau_feature (sklearn/lightgbm/xgboost model object): an unfitted model object
      features (optional, np.array): list/array of feature names. If None, an enumerated list will be used.
docstr_tok: ["Builds","a","model","(","using","X","to","predict","estimated\/actual","tau",")",",","and","then","calculates","shapley","values",".","Args",":","X","(","np.matrix","or","np.array","or","pd.Dataframe",")",":","a","feature","matrix","tau","(","np.array",")",":","a","treatment","effect","vector","(","estimated\/actual",")","model_tau_feature","(","sklearn\/lightgbm\/xgboost","model","object",")",":","an","unfitted","model","object","features","(","optional",",","np.array",")",":","list\/array","of","feature","names",".","If","None",",","an","enumerated","list","will","be","used","."]
code: def get_shap_values(
      self, X=None, model_tau_feature=None, tau=None, features=None
  ):
      """
      Builds a model (using X to predict estimated/actual tau), and then calculates shapley values.
      Args:
          X (np.matrix or np.array or pd.Dataframe): a feature matrix
          tau (np.array): a treatment effect vector (estimated/actual)
          model_tau_feature (sklearn/lightgbm/xgboost model object): an unfitted model object
          features (optional, np.array): list/array of feature names. If None, an enumerated list will be used.
      """
      explainer = Explainer(
          method="shapley",
          control_name=self.control_name,
          X=X,
          tau=tau,
          model_tau=model_tau_feature,
          features=features,
          classes=self._classes,
      )
      return explainer.get_shap_values()
  
imports: from abc import ABCMeta, abstractclassmethod
  import logging
  import numpy
  import pandas
  from causalml.inference.meta.explainer import Explainer
  from causalml.inference.meta.utils import check_p_conditions, convert_pd_to_np
  from causalml.propensity import compute_propensity_score
label_desc: Use image node_id 9 for calling the BaseLearner obj's underlying member method code with example usage: obj.get_shap_values(X, model_tau_feature, tau, features) and returns: explainer