code: def find(
      self,
      model,
      df,
      prediction_col,
      is_classification,
      model_name="xgboost",
  ):
      if model_name == "xgboost":
          df2, explainer = self.xgboost_shap(model, df)
          return df2, explainer
  
      elif model_name == "lightgbm":
          df2, explainer = self.xgboost_shap(model, df)
  
          return df2, explainer
  
      elif model_name == "catboost":
          df2 = self.catboost_shap(model, df)
          explainer = None
          return df2, explainer
  
      elif model_name == "h2o":
          df2, explainer = self.h2o_shap_results(
              model, df, df.as_data_frame(), prediction_col
          )
          return df2, explainer
  
      elif model_name == "randomforest":
          if is_classification:
              df2, explainer = self.randomforest_shap_classification(
                  model, df, prediction_col
              )
          else:
              df2, explainer = self.randomforest_shap(model, df)
          return df2, explainer
  
      elif model_name == "svm":
          if is_classification:
              df2, explainer = self.kernel_shap_classification(
                  model, df, prediction_col
              )
          else:
              df2, explainer = self.kernel_shap(model, df)
          return df2, explainer
  
      elif model_name == "knn":
          if is_classification:
              df2, explainer = self.kernel_shap_classification(
                  model, df, prediction_col
              )
          else:
              df2, explainer = self.kernel_shap(model, df)
          return df2, explainer
  
      elif model_name == "logisticregression":
          if is_classification:
              df2, explainer = self.kernel_shap_classification(
                  model, df, prediction_col
              )
          else:
              df2, explainer = self.kernel_shap(model, df)
          return df2, explainer
  
      elif model_name == "decisiontree":
          if is_classification:
              df2, explainer = self.kernel_shap_classification(
                  model, df, prediction_col
              )
          else:
              df2, explainer = self.kernel_shap(model, df)
          return df2, explainer
  
      elif model_name == "neuralnetwork":
          if is_classification:
              df2, explainer = self.kernel_shap_classification(
                  model, df, prediction_col
              )
          else:
              df2, explainer = self.kernel_shap(model, df)
          return df2, explainer
  
      elif model_name == "gradientboostingregressor":
          df2, explainer = self.xgboost_shap(model, df)
          return df2, explainer
      elif "gradientboosting" in model_name:
          df2, explainer = self.xgboost_shap(model, df)
          return df2, explainer
      else:
          if is_classification:
              df2, explainer = self.kernel_shap_classification(
                  model, df, prediction_col
              )
          else:
              df2, explainer = self.kernel_shap(model, df)
          return df2, explainer
  
file_path: explainx/lib/calculate_shap.py
imports: from imports import *
  from rescale_numeric_feature import *
label_desc: Use image node_id 11 for calling the calculate_shap obj's underlying member method code with example usage: obj.find(model, df, prediction_col, is_classification, model_name) and returns: df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer, df2,  explainer