code: def test_feature_values_align_with_raw_output_shap(self):
      model_cls = LightGBMModel if lgbm_available else XGBModel
      model = model_cls(
          lags=4,
          output_chunk_length=1,
      )
      model.fit(
          series=self.target_ts,
      )
      shap_explain = ShapExplainer(model)
      explanation_results = shap_explain.explain()
  
      feature_values = explanation_results.get_feature_values(
          horizon=1, component="price"
      )
      comparison = explanation_results.get_shap_explanation_object(
          horizon=1, component="price"
      ).data
  
      assert_array_equal(feature_values.values(), comparison)
      assert (
          feature_values.values().shape
          == explanation_results.get_explanation(
              horizon=1, component="price"
          )
          .values()
          .shape
      ), "The shape of the feature values should be the same as the shap values"
  
imports: import copy
  from datetime import date, timedelta
  import matplotlib.pyplot
  import numpy
  import pandas
  import pytest
  import shap
  import sklearn
  from dateutil.relativedelta import relativedelta
  from numpy.testing import assert_array_equal
  from sklearn.preprocessing import MinMaxScaler
  from darts import TimeSeries
  from darts.dataprocessing.transformers import Scaler
  from darts.explainability.explainability_result import ShapExplainabilityResult
  from darts.explainability.shap_explainer import MIN_BACKGROUND_SAMPLE, ShapExplainer
  from darts.models import CatBoostModel, ExponentialSmoothing, LightGBMModel, LinearRegressionModel, NotImportedModule, RegressionModel, XGBModel
  from darts.utils.timeseries_generation import linear_timeseries
label_desc: Use image node_id 8 for calling the TestShapExplainer obj's underlying member method code with example usage: obj.test_feature_values_align_with_raw_output_shap() without return types