class_docstr: Helper Class to wrap the different cases encountered with shap different explainers, multivariates,
  horizon etc.
  Aim to provide shap values for any type of RegressionModel. Manage the MultioutputRegressor cases.
  For darts RegressionModel only.
code: def _build_explainer_sklearn(
      self,
      model_sklearn,
      background_X: pd.DataFrame,
      shap_method: Optional[ShapMethod] = None,
      **kwargs,
  ):
      model_name = type(model_sklearn).__name__
  
      # no shap methods - we need to take the default one
      if shap_method is None:
          if model_name in self.default_sklearn_shap_explainers:
              shap_method = self.default_sklearn_shap_explainers[
                  model_name
              ]
          else:
              shap_method = _ShapMethod.KERNEL
  
      # we define properly the explainer given a shap method
      if shap_method == _ShapMethod.TREE:
          if kwargs.get("feature_perturbation") == "interventional":
              explainer = shap.TreeExplainer(
                  model_sklearn, background_X, **kwargs
              )
          else:
              explainer = shap.TreeExplainer(model_sklearn, **kwargs)
      elif shap_method == _ShapMethod.PERMUTATION:
          explainer = shap.PermutationExplainer(
              model_sklearn.predict, background_X, **kwargs
          )
      elif shap_method == _ShapMethod.PARTITION:
          explainer = shap.PermutationExplainer(
              model_sklearn.predict, background_X, **kwargs
          )
      elif shap_method == _ShapMethod.KERNEL:
          explainer = shap.KernelExplainer(
              model_sklearn.predict,
              background_X,
              keep_index=True,
              **kwargs,
          )
      elif shap_method == _ShapMethod.LINEAR:
          explainer = shap.LinearExplainer(
              model_sklearn, background_X, **kwargs
          )
      elif shap_method == _ShapMethod.DEEP:
          explainer = shap.LinearExplainer(
              model_sklearn, background_X, **kwargs
          )
      elif shap_method == _ShapMethod.ADDITIVE:
          explainer = shap.AdditiveExplainer(
              model_sklearn, background_X, **kwargs
          )
      else:
          raise ValueError(
              "shap_method must be one of the following: "
              + ", ".join([e.value for e in _ShapMethod])
          )
  
      logger.info(
          "The shap method used is of type: " + str(type(explainer))
      )
  
      return explainer
  
imports: from enum import Enum
  from typing import Dict, NewType, Optional, Sequence, Union
  import matplotlib.pyplot
  import pandas
  import shap
  from sklearn.multioutput import MultiOutputRegressor
  from darts import TimeSeries
  from darts.explainability.explainability import _ForecastingModelExplainer
  from darts.explainability.explainability_result import ShapExplainabilityResult
  from darts.logging import get_logger, raise_if, raise_log
  from darts.models.forecasting.regression_model import RegressionModel
  from darts.utils.data.tabularization import create_lagged_prediction_data
label_desc: Use image node_id 3 for calling the _RegressionShapExplainers obj's underlying member method code with example usage: obj._build_explainer_sklearn(model_sklearn, background_X, shap_method) and returns: explainer