shap

import os

from shap import Explanation

import shap
import pandas as pd
from ai4water import Model
import matplotlib.pyplot as plt
from ai4water.postprocessing import ShapExplainer
shap.__version__

from tetx_utils import get_fitted_model, tetx_data
model = get_fitted_model(Model)
x, y, input_features, output_features = tetx_data()
********** Removing Examples with nan in labels  **********

***** Training *****
input_x shape:  (374, 6)
target shape:  (374, 1)
class MyShapExplainer(ShapExplainer):

    def summary_plot(
            self,
            plot_type: str = None,
            name: str = "summary_plot",
            **kwargs
    ):
        """
        Plots the `summary <https://shap-lrjball.readthedocs.io/en/latest/generated/shap.summary_plot.html#shap.summary_plot>`_
        plot of SHAP package.
        Arguments:
            plot_type : str,
                either "bar", or "violen" or "dot"
            name:
                name of saved file
            kwargs:
                any keyword arguments to shap.summary_plot
        """

        def _summary_plot(_shap_val, _data, _features, _name):
            plt.close('all')

            shap.summary_plot(_shap_val, _data, show=False, plot_type=plot_type,
                              feature_names=_features,
                              **kwargs)
            # if self.save:
            #     plt.savefig(os.path.join(self.path, _name + " _bar"), dpi=300,
            #                 bbox_inches="tight")
            # if self.show:
            #     plt.show()

            return

        shap_vals = self.shap_values
        if isinstance(shap_vals, list) and len(shap_vals) == 1:
            shap_vals = shap_vals[0]

        data = self.data

        if self.single_source:
            if data.ndim == 3:
                assert shap_vals.ndim == 3

                for lookback in range(data.shape[1]):

                    _summary_plot(shap_vals[:, lookback],
                                  _data=data[:, lookback],
                                  _features=self.features,
                                  _name=f"{name}_{lookback}")
            else:
                _summary_plot(_shap_val=shap_vals, _data=data,
                              _features=self.features, _name=name)
        else:
            # data is a list of data sources
            for idx, _data in enumerate(data):
                if _data.ndim == 3:
                    for lb in range(_data.shape[1]):
                        _summary_plot(_shap_val=shap_vals[idx][:, lb],
                                      _data=_data[:, lb],
                                      _features=self.features[idx],
                                      _name=f"{name}_{idx}_{lb}")
                else:
                    _summary_plot(_shap_val=shap_vals[idx], _data=_data,
                                  _features=self.features[idx], _name=f"{name}_{idx}")

        return

    def waterfall_plot_single_example(
            self,
            example_index: int,
            name: str = "waterfall",
            max_display: int = 10,
    ):
        """draws and saves waterfall_ plot
         for one example.
        The waterfall plots are based upon SHAP values and show the
        contribution by each feature in model's prediction. It shows which
        feature pushed the prediction in which direction. They answer the
        question, why the ML model simply did not predict mean of training y
        instead of what it predicted. The mean of training observations that
        the ML model saw during training is called base value or expected value.
        Arguments:
            example_index : int
                index of example to use
            max_display : int
                maximu features to display
            name : str
                name of plot
        .. _waterfall:
            https://shap.readthedocs.io/en/latest/generated/shap.plots.waterfall.html
        """
        if self.explainer.__class__.__name__ in ["Deep", "Kernel"]:
            shap_vals_as_exp = None
        else:
            shap_vals_as_exp = self.explainer(self.data)

        shap_values = self.shap_values
        if isinstance(shap_values, list) and len(shap_values) == 1:
            shap_values = shap_values[0]

        plt.close('all')

        if shap_vals_as_exp is None:

            features = self.features
            if not self.data_is_2d:
                features = self.unrolled_features

            # waterfall plot expects first argument as Explaination class
            # which must have at least these attributes (values, data, feature_names, base_values)
            # https://github.com/slundberg/shap/issues/1420#issuecomment-715190610
            if not self.data_is_2d:  # if original data is 3d then we flat it into 1d array
                values = shap_values[example_index].reshape(-1, )
                data = self.data[example_index].reshape(-1, )
            else:
                values = shap_values[example_index]
                data = self.data.iloc[example_index]

            exp_value = self.explainer.expected_value
            if self.explainer.__class__.__name__ in ["Kernel"]:
                pass
            else:
                exp_value = exp_value[0]

            e = Explanation(
                values,
                base_values=exp_value,
                data=data,
                feature_names=features
            )

            shap.plots.waterfall(e, show=False, max_display=max_display)
        else:
            shap.plots.waterfall(shap_vals_as_exp[example_index], show=False, max_display=max_display)

        if self.save:
            plt.savefig(os.path.join(self.path, f"{name}_{example_index}"),
                        dpi=300,
                        bbox_inches="tight")

        if self.show:
            plt.show()

        return
explainer = MyShapExplainer(model=model,
                         data=x,
                         train_data=x,
                         feature_names=model.input_features,
                          #save=False
                         )
explainer.explainer
  0%|          | 0/370 [00:00<?, ?it/s]
  1%|          | 2/370 [00:00<00:37,  9.93it/s]
  1%|          | 3/370 [00:00<00:39,  9.24it/s]
  1%|1         | 4/370 [00:00<00:40,  8.94it/s]
  1%|1         | 5/370 [00:00<00:41,  8.74it/s]
  2%|1         | 6/370 [00:00<00:42,  8.67it/s]
  2%|1         | 7/370 [00:00<00:42,  8.59it/s]
  2%|2         | 8/370 [00:00<00:42,  8.54it/s]
  2%|2         | 9/370 [00:01<00:42,  8.52it/s]
  3%|2         | 10/370 [00:01<00:42,  8.47it/s]
  3%|2         | 11/370 [00:01<00:42,  8.47it/s]
  3%|3         | 12/370 [00:01<00:42,  8.45it/s]
  4%|3         | 13/370 [00:01<00:42,  8.43it/s]
  4%|3         | 14/370 [00:01<00:42,  8.44it/s]
  4%|4         | 15/370 [00:01<00:42,  8.44it/s]
  4%|4         | 16/370 [00:01<00:41,  8.43it/s]
  5%|4         | 17/370 [00:01<00:41,  8.42it/s]
  5%|4         | 18/370 [00:02<00:45,  7.67it/s]
  5%|5         | 19/370 [00:02<00:44,  7.80it/s]
  5%|5         | 20/370 [00:02<00:43,  7.97it/s]
  6%|5         | 21/370 [00:02<00:43,  8.11it/s]
  6%|5         | 22/370 [00:02<00:42,  8.21it/s]
  6%|6         | 23/370 [00:02<00:41,  8.27it/s]
  6%|6         | 24/370 [00:02<00:41,  8.33it/s]
  7%|6         | 25/370 [00:02<00:41,  8.37it/s]
  7%|7         | 26/370 [00:03<00:41,  8.38it/s]
  7%|7         | 27/370 [00:03<00:40,  8.40it/s]
  8%|7         | 28/370 [00:03<00:40,  8.41it/s]
  8%|7         | 29/370 [00:03<00:40,  8.41it/s]
  8%|8         | 30/370 [00:03<00:40,  8.41it/s]
  8%|8         | 31/370 [00:03<00:40,  8.32it/s]
  9%|8         | 32/370 [00:03<00:44,  7.55it/s]
  9%|8         | 33/370 [00:04<00:46,  7.23it/s]
  9%|9         | 34/370 [00:04<00:44,  7.55it/s]
  9%|9         | 35/370 [00:04<00:42,  7.80it/s]
 10%|9         | 36/370 [00:04<00:41,  7.98it/s]
 10%|#         | 37/370 [00:04<00:41,  8.12it/s]
 10%|#         | 38/370 [00:04<00:44,  7.52it/s]
 11%|#         | 39/370 [00:04<00:42,  7.78it/s]
 11%|#         | 40/370 [00:04<00:41,  7.97it/s]
 11%|#1        | 41/370 [00:04<00:40,  8.12it/s]
 11%|#1        | 42/370 [00:05<00:40,  8.19it/s]
 12%|#1        | 43/370 [00:05<00:39,  8.26it/s]
 12%|#1        | 44/370 [00:05<00:39,  8.31it/s]
 12%|#2        | 45/370 [00:05<00:38,  8.34it/s]
 12%|#2        | 46/370 [00:05<00:38,  8.37it/s]
 13%|#2        | 47/370 [00:05<00:38,  8.41it/s]
 13%|#2        | 48/370 [00:05<00:38,  8.42it/s]
 13%|#3        | 49/370 [00:05<00:38,  8.42it/s]
 14%|#3        | 50/370 [00:06<00:38,  8.41it/s]
 14%|#3        | 51/370 [00:06<00:37,  8.40it/s]
 14%|#4        | 52/370 [00:06<00:37,  8.40it/s]
 14%|#4        | 53/370 [00:06<00:37,  8.40it/s]
 15%|#4        | 54/370 [00:06<00:37,  8.39it/s]
 15%|#4        | 55/370 [00:06<00:37,  8.41it/s]
 15%|#5        | 56/370 [00:06<00:37,  8.41it/s]
 15%|#5        | 57/370 [00:06<00:40,  7.68it/s]
 16%|#5        | 58/370 [00:07<00:39,  7.90it/s]
 16%|#5        | 59/370 [00:07<00:38,  8.07it/s]
 16%|#6        | 60/370 [00:07<00:37,  8.21it/s]
 16%|#6        | 61/370 [00:07<00:37,  8.28it/s]
 17%|#6        | 62/370 [00:07<00:37,  8.30it/s]
 17%|#7        | 63/370 [00:07<00:36,  8.34it/s]
 17%|#7        | 64/370 [00:07<00:36,  8.38it/s]
 18%|#7        | 65/370 [00:07<00:36,  8.39it/s]
 18%|#7        | 66/370 [00:07<00:36,  8.41it/s]
 18%|#8        | 67/370 [00:08<00:35,  8.43it/s]
 18%|#8        | 68/370 [00:08<00:35,  8.44it/s]
 19%|#8        | 69/370 [00:08<00:35,  8.44it/s]
 19%|#8        | 70/370 [00:08<00:35,  8.44it/s]
 19%|#9        | 71/370 [00:08<00:35,  8.43it/s]
 19%|#9        | 72/370 [00:08<00:35,  8.45it/s]
 20%|#9        | 73/370 [00:08<00:35,  8.44it/s]
 20%|##        | 74/370 [00:08<00:35,  8.43it/s]
 20%|##        | 75/370 [00:09<00:34,  8.44it/s]
 21%|##        | 76/370 [00:09<00:35,  8.36it/s]
 21%|##        | 77/370 [00:09<00:35,  8.36it/s]
 21%|##1       | 78/370 [00:09<00:34,  8.38it/s]
 21%|##1       | 79/370 [00:09<00:34,  8.38it/s]
 22%|##1       | 80/370 [00:09<00:34,  8.41it/s]
 22%|##1       | 81/370 [00:09<00:34,  8.42it/s]
 22%|##2       | 82/370 [00:09<00:34,  8.41it/s]
 22%|##2       | 83/370 [00:10<00:34,  8.33it/s]
 23%|##2       | 84/370 [00:10<00:37,  7.63it/s]
 23%|##2       | 85/370 [00:10<00:36,  7.84it/s]
 23%|##3       | 86/370 [00:10<00:35,  8.02it/s]
 24%|##3       | 87/370 [00:10<00:34,  8.15it/s]
 24%|##3       | 88/370 [00:10<00:34,  8.24it/s]
 24%|##4       | 89/370 [00:10<00:33,  8.30it/s]
 24%|##4       | 90/370 [00:10<00:33,  8.29it/s]
 25%|##4       | 91/370 [00:11<00:33,  8.33it/s]
 25%|##4       | 92/370 [00:11<00:33,  8.33it/s]
 25%|##5       | 93/370 [00:11<00:33,  8.36it/s]
 25%|##5       | 94/370 [00:11<00:32,  8.36it/s]
 26%|##5       | 95/370 [00:11<00:32,  8.36it/s]
 26%|##5       | 96/370 [00:11<00:32,  8.38it/s]
 26%|##6       | 97/370 [00:11<00:32,  8.38it/s]
 26%|##6       | 98/370 [00:11<00:32,  8.39it/s]
 27%|##6       | 99/370 [00:11<00:32,  8.37it/s]
 27%|##7       | 100/370 [00:12<00:32,  8.39it/s]
 27%|##7       | 101/370 [00:12<00:32,  8.38it/s]
 28%|##7       | 102/370 [00:12<00:31,  8.38it/s]
 28%|##7       | 103/370 [00:12<00:31,  8.39it/s]
 28%|##8       | 104/370 [00:12<00:31,  8.39it/s]
 28%|##8       | 105/370 [00:12<00:31,  8.38it/s]
 29%|##8       | 106/370 [00:12<00:31,  8.35it/s]
 29%|##8       | 107/370 [00:12<00:31,  8.34it/s]
 29%|##9       | 108/370 [00:13<00:31,  8.34it/s]
 29%|##9       | 109/370 [00:13<00:31,  8.36it/s]
 30%|##9       | 110/370 [00:13<00:31,  8.37it/s]
 30%|###       | 111/370 [00:13<00:30,  8.36it/s]
 30%|###       | 112/370 [00:13<00:30,  8.35it/s]
 31%|###       | 113/370 [00:13<00:30,  8.37it/s]
 31%|###       | 114/370 [00:13<00:30,  8.39it/s]
 31%|###1      | 115/370 [00:13<00:30,  8.36it/s]
 31%|###1      | 116/370 [00:13<00:30,  8.37it/s]
 32%|###1      | 117/370 [00:14<00:30,  8.36it/s]
 32%|###1      | 118/370 [00:14<00:30,  8.36it/s]
 32%|###2      | 119/370 [00:14<00:29,  8.39it/s]
 32%|###2      | 120/370 [00:14<00:29,  8.41it/s]
 33%|###2      | 121/370 [00:14<00:29,  8.42it/s]
 33%|###2      | 122/370 [00:14<00:29,  8.43it/s]
 33%|###3      | 123/370 [00:14<00:29,  8.44it/s]
 34%|###3      | 124/370 [00:14<00:29,  8.44it/s]
 34%|###3      | 125/370 [00:15<00:29,  8.44it/s]
 34%|###4      | 126/370 [00:15<00:28,  8.43it/s]
 34%|###4      | 127/370 [00:15<00:28,  8.42it/s]
 35%|###4      | 128/370 [00:15<00:28,  8.42it/s]
 35%|###4      | 129/370 [00:15<00:28,  8.40it/s]
 35%|###5      | 130/370 [00:15<00:28,  8.41it/s]
 35%|###5      | 131/370 [00:15<00:28,  8.43it/s]
 36%|###5      | 132/370 [00:15<00:30,  7.68it/s]
 36%|###5      | 133/370 [00:16<00:30,  7.90it/s]
 36%|###6      | 134/370 [00:16<00:29,  8.05it/s]
 36%|###6      | 135/370 [00:16<00:28,  8.16it/s]
 37%|###6      | 136/370 [00:16<00:28,  8.24it/s]
 37%|###7      | 137/370 [00:16<00:28,  8.30it/s]
 37%|###7      | 138/370 [00:16<00:27,  8.35it/s]
 38%|###7      | 139/370 [00:16<00:27,  8.38it/s]
 38%|###7      | 140/370 [00:16<00:27,  8.39it/s]
 38%|###8      | 141/370 [00:16<00:27,  8.40it/s]
 38%|###8      | 142/370 [00:17<00:27,  8.41it/s]
 39%|###8      | 143/370 [00:17<00:27,  8.34it/s]
 39%|###8      | 144/370 [00:17<00:27,  8.34it/s]
 39%|###9      | 145/370 [00:17<00:26,  8.35it/s]
 39%|###9      | 146/370 [00:17<00:26,  8.36it/s]
 40%|###9      | 147/370 [00:17<00:26,  8.39it/s]
 40%|####      | 148/370 [00:17<00:26,  8.41it/s]
 40%|####      | 149/370 [00:17<00:28,  7.62it/s]
 41%|####      | 150/370 [00:18<00:30,  7.21it/s]
 41%|####      | 151/370 [00:18<00:29,  7.48it/s]
 41%|####1     | 152/370 [00:18<00:28,  7.73it/s]
 41%|####1     | 153/370 [00:18<00:27,  7.93it/s]
 42%|####1     | 154/370 [00:18<00:26,  8.08it/s]
 42%|####1     | 155/370 [00:18<00:26,  8.17it/s]
 42%|####2     | 156/370 [00:18<00:25,  8.24it/s]
 42%|####2     | 157/370 [00:18<00:25,  8.31it/s]
 43%|####2     | 158/370 [00:19<00:25,  8.34it/s]
 43%|####2     | 159/370 [00:19<00:25,  8.34it/s]
 43%|####3     | 160/370 [00:19<00:27,  7.63it/s]
 44%|####3     | 161/370 [00:19<00:26,  7.84it/s]
 44%|####3     | 162/370 [00:19<00:25,  8.01it/s]
 44%|####4     | 163/370 [00:19<00:25,  8.13it/s]
 44%|####4     | 164/370 [00:19<00:25,  8.20it/s]
 45%|####4     | 165/370 [00:19<00:24,  8.25it/s]
 45%|####4     | 166/370 [00:20<00:24,  8.30it/s]
 45%|####5     | 167/370 [00:20<00:24,  8.34it/s]
 45%|####5     | 168/370 [00:20<00:24,  8.36it/s]
 46%|####5     | 169/370 [00:20<00:23,  8.38it/s]
 46%|####5     | 170/370 [00:20<00:23,  8.40it/s]
 46%|####6     | 171/370 [00:20<00:23,  8.41it/s]
 46%|####6     | 172/370 [00:20<00:23,  8.42it/s]
 47%|####6     | 173/370 [00:20<00:23,  8.42it/s]
 47%|####7     | 174/370 [00:21<00:23,  8.42it/s]
 47%|####7     | 175/370 [00:21<00:23,  8.42it/s]
 48%|####7     | 176/370 [00:21<00:23,  8.41it/s]
 48%|####7     | 177/370 [00:21<00:23,  8.36it/s]
 48%|####8     | 178/370 [00:21<00:22,  8.36it/s]
 48%|####8     | 179/370 [00:21<00:22,  8.38it/s]
 49%|####8     | 180/370 [00:21<00:22,  8.39it/s]
 49%|####8     | 181/370 [00:21<00:22,  8.30it/s]
 49%|####9     | 182/370 [00:21<00:22,  8.31it/s]
 49%|####9     | 183/370 [00:22<00:22,  8.33it/s]
 50%|####9     | 184/370 [00:22<00:22,  8.25it/s]
 50%|#####     | 185/370 [00:22<00:22,  8.31it/s]
 50%|#####     | 186/370 [00:22<00:22,  8.35it/s]
 51%|#####     | 187/370 [00:22<00:21,  8.38it/s]
 51%|#####     | 188/370 [00:22<00:21,  8.40it/s]
 51%|#####1    | 189/370 [00:22<00:21,  8.41it/s]
 51%|#####1    | 190/370 [00:22<00:21,  8.39it/s]
 52%|#####1    | 191/370 [00:23<00:21,  8.39it/s]
 52%|#####1    | 192/370 [00:23<00:21,  8.35it/s]
 52%|#####2    | 193/370 [00:23<00:21,  8.37it/s]
 52%|#####2    | 194/370 [00:23<00:20,  8.40it/s]
 53%|#####2    | 195/370 [00:23<00:20,  8.40it/s]
 53%|#####2    | 196/370 [00:23<00:20,  8.40it/s]
 53%|#####3    | 197/370 [00:23<00:20,  8.40it/s]
 54%|#####3    | 198/370 [00:23<00:20,  8.39it/s]
 54%|#####3    | 199/370 [00:24<00:20,  8.39it/s]
 54%|#####4    | 200/370 [00:24<00:20,  8.38it/s]
 54%|#####4    | 201/370 [00:24<00:22,  7.68it/s]
 55%|#####4    | 202/370 [00:24<00:21,  7.88it/s]
 55%|#####4    | 203/370 [00:24<00:20,  8.04it/s]
 55%|#####5    | 204/370 [00:24<00:20,  8.15it/s]
 55%|#####5    | 205/370 [00:24<00:20,  8.23it/s]
 56%|#####5    | 206/370 [00:24<00:19,  8.28it/s]
 56%|#####5    | 207/370 [00:25<00:19,  8.32it/s]
 56%|#####6    | 208/370 [00:25<00:19,  8.34it/s]
 56%|#####6    | 209/370 [00:25<00:19,  8.37it/s]
 57%|#####6    | 210/370 [00:25<00:19,  8.37it/s]
 57%|#####7    | 211/370 [00:25<00:18,  8.38it/s]
 57%|#####7    | 212/370 [00:25<00:18,  8.40it/s]
 58%|#####7    | 213/370 [00:25<00:18,  8.42it/s]
 58%|#####7    | 214/370 [00:25<00:18,  8.42it/s]
 58%|#####8    | 215/370 [00:25<00:18,  8.43it/s]
 58%|#####8    | 216/370 [00:26<00:18,  8.42it/s]
 59%|#####8    | 217/370 [00:26<00:18,  8.35it/s]
 59%|#####8    | 218/370 [00:26<00:18,  8.34it/s]
 59%|#####9    | 219/370 [00:26<00:18,  8.37it/s]
 59%|#####9    | 220/370 [00:26<00:17,  8.38it/s]
 60%|#####9    | 221/370 [00:26<00:17,  8.38it/s]
 60%|######    | 222/370 [00:26<00:17,  8.37it/s]
 60%|######    | 223/370 [00:26<00:17,  8.37it/s]
 61%|######    | 224/370 [00:27<00:17,  8.38it/s]
 61%|######    | 225/370 [00:27<00:17,  8.39it/s]
 61%|######1   | 226/370 [00:27<00:17,  8.40it/s]
 61%|######1   | 227/370 [00:27<00:16,  8.42it/s]
 62%|######1   | 228/370 [00:27<00:18,  7.67it/s]
 62%|######1   | 229/370 [00:27<00:17,  7.88it/s]
 62%|######2   | 230/370 [00:27<00:17,  8.03it/s]
 62%|######2   | 231/370 [00:27<00:17,  8.08it/s]
 63%|######2   | 232/370 [00:28<00:16,  8.16it/s]
 63%|######2   | 233/370 [00:28<00:16,  8.22it/s]
 63%|######3   | 234/370 [00:28<00:16,  8.28it/s]
 64%|######3   | 235/370 [00:28<00:16,  8.31it/s]
 64%|######3   | 236/370 [00:28<00:16,  8.33it/s]
 64%|######4   | 237/370 [00:28<00:15,  8.35it/s]
 64%|######4   | 238/370 [00:28<00:15,  8.37it/s]
 65%|######4   | 239/370 [00:28<00:15,  8.37it/s]
 65%|######4   | 240/370 [00:28<00:15,  8.39it/s]
 65%|######5   | 241/370 [00:29<00:15,  8.38it/s]
 65%|######5   | 242/370 [00:29<00:15,  8.37it/s]
 66%|######5   | 243/370 [00:29<00:15,  8.37it/s]
 66%|######5   | 244/370 [00:29<00:15,  8.36it/s]
 66%|######6   | 245/370 [00:29<00:14,  8.37it/s]
 66%|######6   | 246/370 [00:29<00:14,  8.37it/s]
 67%|######6   | 247/370 [00:29<00:14,  8.36it/s]
 67%|######7   | 248/370 [00:29<00:14,  8.37it/s]
 67%|######7   | 249/370 [00:30<00:14,  8.39it/s]
 68%|######7   | 250/370 [00:30<00:14,  8.36it/s]
 68%|######7   | 251/370 [00:30<00:15,  7.58it/s]
 68%|######8   | 252/370 [00:30<00:16,  7.18it/s]
 68%|######8   | 253/370 [00:30<00:16,  6.97it/s]
 69%|######8   | 254/370 [00:30<00:15,  7.35it/s]
 69%|######8   | 255/370 [00:30<00:15,  7.64it/s]
 69%|######9   | 256/370 [00:31<00:14,  7.86it/s]
 69%|######9   | 257/370 [00:31<00:14,  8.02it/s]
 70%|######9   | 258/370 [00:31<00:13,  8.14it/s]
 70%|#######   | 259/370 [00:31<00:13,  8.22it/s]
 70%|#######   | 260/370 [00:31<00:13,  8.28it/s]
 71%|#######   | 261/370 [00:31<00:13,  8.31it/s]
 71%|#######   | 262/370 [00:31<00:12,  8.34it/s]
 71%|#######1  | 263/370 [00:31<00:12,  8.36it/s]
 71%|#######1  | 264/370 [00:31<00:12,  8.37it/s]
 72%|#######1  | 265/370 [00:32<00:12,  8.38it/s]
 72%|#######1  | 266/370 [00:32<00:12,  8.39it/s]
 72%|#######2  | 267/370 [00:32<00:12,  8.40it/s]
 72%|#######2  | 268/370 [00:32<00:12,  8.41it/s]
 73%|#######2  | 269/370 [00:32<00:12,  8.41it/s]
 73%|#######2  | 270/370 [00:32<00:11,  8.41it/s]
 73%|#######3  | 271/370 [00:32<00:11,  8.41it/s]
 74%|#######3  | 272/370 [00:32<00:11,  8.40it/s]
 74%|#######3  | 273/370 [00:33<00:11,  8.40it/s]
 74%|#######4  | 274/370 [00:33<00:11,  8.39it/s]
 74%|#######4  | 275/370 [00:33<00:11,  8.40it/s]
 75%|#######4  | 276/370 [00:33<00:11,  8.35it/s]
 75%|#######4  | 277/370 [00:33<00:11,  8.36it/s]
 75%|#######5  | 278/370 [00:33<00:10,  8.38it/s]
 75%|#######5  | 279/370 [00:33<00:10,  8.38it/s]
 76%|#######5  | 280/370 [00:33<00:10,  8.38it/s]
 76%|#######5  | 281/370 [00:33<00:10,  8.39it/s]
 76%|#######6  | 282/370 [00:34<00:10,  8.39it/s]
 76%|#######6  | 283/370 [00:34<00:10,  8.41it/s]
 77%|#######6  | 284/370 [00:34<00:10,  8.41it/s]
 77%|#######7  | 285/370 [00:34<00:10,  8.39it/s]
 77%|#######7  | 286/370 [00:34<00:11,  7.60it/s]
 78%|#######7  | 287/370 [00:34<00:11,  7.26it/s]
 78%|#######7  | 288/370 [00:34<00:10,  7.58it/s]
 78%|#######8  | 289/370 [00:35<00:10,  7.81it/s]
 78%|#######8  | 290/370 [00:35<00:10,  7.97it/s]
 79%|#######8  | 291/370 [00:35<00:09,  8.11it/s]
 79%|#######8  | 292/370 [00:35<00:09,  8.20it/s]
 79%|#######9  | 293/370 [00:35<00:09,  8.27it/s]
 79%|#######9  | 294/370 [00:35<00:09,  8.31it/s]
 80%|#######9  | 295/370 [00:35<00:09,  8.33it/s]
 80%|########  | 296/370 [00:35<00:08,  8.36it/s]
 80%|########  | 297/370 [00:35<00:08,  8.38it/s]
 81%|########  | 298/370 [00:36<00:08,  8.39it/s]
 81%|########  | 299/370 [00:36<00:08,  8.25it/s]
 81%|########1 | 300/370 [00:36<00:09,  7.66it/s]
 81%|########1 | 301/370 [00:36<00:08,  7.88it/s]
 82%|########1 | 302/370 [00:36<00:08,  8.05it/s]
 82%|########1 | 303/370 [00:36<00:08,  8.15it/s]
 82%|########2 | 304/370 [00:36<00:07,  8.26it/s]
 82%|########2 | 305/370 [00:36<00:07,  8.30it/s]
 83%|########2 | 306/370 [00:37<00:07,  8.32it/s]
 83%|########2 | 307/370 [00:37<00:07,  8.35it/s]
 83%|########3 | 308/370 [00:37<00:07,  8.31it/s]
 84%|########3 | 309/370 [00:37<00:07,  8.35it/s]
 84%|########3 | 310/370 [00:37<00:07,  8.36it/s]
 84%|########4 | 311/370 [00:37<00:07,  8.34it/s]
 84%|########4 | 312/370 [00:37<00:06,  8.39it/s]
 85%|########4 | 313/370 [00:37<00:06,  8.39it/s]
 85%|########4 | 314/370 [00:38<00:06,  8.40it/s]
 85%|########5 | 315/370 [00:38<00:06,  8.41it/s]
 85%|########5 | 316/370 [00:38<00:06,  8.41it/s]
 86%|########5 | 317/370 [00:38<00:06,  8.40it/s]
 86%|########5 | 318/370 [00:38<00:06,  8.40it/s]
 86%|########6 | 319/370 [00:38<00:06,  8.40it/s]
 86%|########6 | 320/370 [00:38<00:05,  8.41it/s]
 87%|########6 | 321/370 [00:38<00:05,  8.29it/s]
 87%|########7 | 322/370 [00:38<00:05,  8.34it/s]
 87%|########7 | 323/370 [00:39<00:05,  8.37it/s]
 88%|########7 | 324/370 [00:39<00:05,  8.39it/s]
 88%|########7 | 325/370 [00:39<00:05,  8.39it/s]
 88%|########8 | 326/370 [00:39<00:05,  8.37it/s]
 88%|########8 | 327/370 [00:39<00:05,  8.21it/s]
 89%|########8 | 328/370 [00:39<00:05,  8.25it/s]
 89%|########8 | 329/370 [00:39<00:04,  8.28it/s]
 89%|########9 | 330/370 [00:39<00:04,  8.27it/s]
 89%|########9 | 331/370 [00:40<00:04,  8.28it/s]
 90%|########9 | 332/370 [00:40<00:04,  8.31it/s]
 90%|######### | 333/370 [00:40<00:04,  8.30it/s]
 90%|######### | 334/370 [00:40<00:04,  8.35it/s]
 91%|######### | 335/370 [00:40<00:04,  8.38it/s]
 91%|######### | 336/370 [00:40<00:04,  8.31it/s]
 91%|#########1| 337/370 [00:40<00:03,  8.33it/s]
 91%|#########1| 338/370 [00:40<00:03,  8.34it/s]
 92%|#########1| 339/370 [00:41<00:03,  8.35it/s]
 92%|#########1| 340/370 [00:41<00:03,  8.34it/s]
 92%|#########2| 341/370 [00:41<00:03,  8.37it/s]
 92%|#########2| 342/370 [00:41<00:03,  8.40it/s]
 93%|#########2| 343/370 [00:41<00:03,  8.37it/s]
 93%|#########2| 344/370 [00:41<00:03,  8.35it/s]
 93%|#########3| 345/370 [00:41<00:02,  8.35it/s]
 94%|#########3| 346/370 [00:41<00:02,  8.37it/s]
 94%|#########3| 347/370 [00:41<00:02,  8.31it/s]
 94%|#########4| 348/370 [00:42<00:02,  8.30it/s]
 94%|#########4| 349/370 [00:42<00:02,  8.28it/s]
 95%|#########4| 350/370 [00:42<00:02,  8.32it/s]
 95%|#########4| 351/370 [00:42<00:02,  8.36it/s]
 95%|#########5| 352/370 [00:42<00:02,  8.39it/s]
 95%|#########5| 353/370 [00:42<00:02,  8.41it/s]
 96%|#########5| 354/370 [00:42<00:01,  8.33it/s]
 96%|#########5| 355/370 [00:42<00:01,  8.32it/s]
 96%|#########6| 356/370 [00:43<00:01,  8.34it/s]
 96%|#########6| 357/370 [00:43<00:01,  8.35it/s]
 97%|#########6| 358/370 [00:43<00:01,  8.38it/s]
 97%|#########7| 359/370 [00:43<00:01,  8.38it/s]
 97%|#########7| 360/370 [00:43<00:01,  8.35it/s]
 98%|#########7| 361/370 [00:43<00:01,  8.34it/s]
 98%|#########7| 362/370 [00:43<00:00,  8.35it/s]
 98%|#########8| 363/370 [00:43<00:00,  8.36it/s]
 98%|#########8| 364/370 [00:44<00:00,  8.33it/s]
 99%|#########8| 365/370 [00:44<00:00,  8.31it/s]
 99%|#########8| 366/370 [00:44<00:00,  8.29it/s]
 99%|#########9| 367/370 [00:44<00:00,  8.33it/s]
 99%|#########9| 368/370 [00:44<00:00,  8.21it/s]
100%|#########9| 369/370 [00:44<00:00,  8.28it/s]
100%|##########| 370/370 [00:44<00:00,  8.34it/s]
100%|##########| 370/370 [00:44<00:00,  8.27it/s]

<shap.explainers._kernel.Kernel object at 0x7fa22c778c70>
explainer.plot_shap_values()
tetx shap

explainer.waterfall_plot_single_example(27)

#%%

explainer.waterfall_plot_single_example(28)

#%%

explainer.waterfall_plot_single_example(29)

#%%

explainer.waterfall_plot_single_example(30)

#%%

explainer.waterfall_plot_single_example(31)

#%%

explainer.waterfall_plot_single_example(32)

#%%

explainer.waterfall_plot_single_example(33)

#explainer.beeswarm_plot()
#explainer.heatmap()
explainer.summary_plot(plot_type="dot")
tetx shap
explainer.summary_plot(plot_type="bar")
tetx shap
explainer.summary_plot(plot_type="violin")
tetx shap
explainer.dependence_plot_all_features()
tetx shap
# explainer.scatter_plot_all_features()
## Kernel Explainer
explainer = MyShapExplainer(model=model,
                         data=x,
                         train_data=x,
                         feature_names=model.input_features,
                          explainer="KernelExplainer",
                          #save=False
                         )
explainer.explainer
  0%|          | 0/370 [00:00<?, ?it/s]
  1%|          | 2/370 [00:00<00:36,  9.99it/s]
  1%|          | 3/370 [00:00<00:39,  9.25it/s]
  1%|1         | 4/370 [00:00<00:40,  8.96it/s]
  1%|1         | 5/370 [00:00<00:41,  8.81it/s]
  2%|1         | 6/370 [00:00<00:41,  8.70it/s]
  2%|1         | 7/370 [00:00<00:42,  8.63it/s]
  2%|2         | 8/370 [00:00<00:42,  8.59it/s]
  2%|2         | 9/370 [00:01<00:42,  8.56it/s]
  3%|2         | 10/370 [00:01<00:42,  8.52it/s]
  3%|2         | 11/370 [00:01<00:42,  8.51it/s]
  3%|3         | 12/370 [00:01<00:42,  8.50it/s]
  4%|3         | 13/370 [00:01<00:42,  8.49it/s]
  4%|3         | 14/370 [00:01<00:46,  7.67it/s]
  4%|4         | 15/370 [00:01<00:48,  7.30it/s]
  4%|4         | 16/370 [00:01<00:46,  7.56it/s]
  5%|4         | 17/370 [00:02<00:45,  7.79it/s]
  5%|4         | 18/370 [00:02<00:44,  7.99it/s]
  5%|5         | 19/370 [00:02<00:43,  8.13it/s]
  5%|5         | 20/370 [00:02<00:42,  8.23it/s]
  6%|5         | 21/370 [00:02<00:42,  8.30it/s]
  6%|5         | 22/370 [00:02<00:41,  8.35it/s]
  6%|6         | 23/370 [00:02<00:41,  8.40it/s]
  6%|6         | 24/370 [00:02<00:41,  8.44it/s]
  7%|6         | 25/370 [00:02<00:40,  8.45it/s]
  7%|7         | 26/370 [00:03<00:44,  7.72it/s]
  7%|7         | 27/370 [00:03<00:43,  7.93it/s]
  8%|7         | 28/370 [00:03<00:42,  8.08it/s]
  8%|7         | 29/370 [00:03<00:41,  8.21it/s]
  8%|8         | 30/370 [00:03<00:40,  8.30it/s]
  8%|8         | 31/370 [00:03<00:40,  8.36it/s]
  9%|8         | 32/370 [00:03<00:40,  8.39it/s]
  9%|8         | 33/370 [00:03<00:40,  8.42it/s]
  9%|9         | 34/370 [00:04<00:39,  8.43it/s]
  9%|9         | 35/370 [00:04<00:39,  8.45it/s]
 10%|9         | 36/370 [00:04<00:39,  8.46it/s]
 10%|#         | 37/370 [00:04<00:39,  8.48it/s]
 10%|#         | 38/370 [00:04<00:39,  8.49it/s]
 11%|#         | 39/370 [00:04<00:38,  8.49it/s]
 11%|#         | 40/370 [00:04<00:38,  8.49it/s]
 11%|#1        | 41/370 [00:04<00:39,  8.40it/s]
 11%|#1        | 42/370 [00:05<00:42,  7.70it/s]
 12%|#1        | 43/370 [00:05<00:41,  7.92it/s]
 12%|#1        | 44/370 [00:05<00:40,  8.08it/s]
 12%|#2        | 45/370 [00:05<00:39,  8.19it/s]
 12%|#2        | 46/370 [00:05<00:39,  8.29it/s]
 13%|#2        | 47/370 [00:05<00:38,  8.35it/s]
 13%|#2        | 48/370 [00:05<00:38,  8.41it/s]
 13%|#3        | 49/370 [00:05<00:38,  8.45it/s]
 14%|#3        | 50/370 [00:06<00:37,  8.46it/s]
 14%|#3        | 51/370 [00:06<00:37,  8.48it/s]
 14%|#4        | 52/370 [00:06<00:37,  8.49it/s]
 14%|#4        | 53/370 [00:06<00:37,  8.49it/s]
 15%|#4        | 54/370 [00:06<00:37,  8.49it/s]
 15%|#4        | 55/370 [00:06<00:37,  8.50it/s]
 15%|#5        | 56/370 [00:06<00:37,  8.49it/s]
 15%|#5        | 57/370 [00:06<00:36,  8.48it/s]
 16%|#5        | 58/370 [00:06<00:36,  8.48it/s]
 16%|#5        | 59/370 [00:07<00:40,  7.74it/s]
 16%|#6        | 60/370 [00:07<00:39,  7.94it/s]
 16%|#6        | 61/370 [00:07<00:38,  8.09it/s]
 17%|#6        | 62/370 [00:07<00:37,  8.19it/s]
 17%|#7        | 63/370 [00:07<00:37,  8.29it/s]
 17%|#7        | 64/370 [00:07<00:36,  8.35it/s]
 18%|#7        | 65/370 [00:07<00:36,  8.38it/s]
 18%|#7        | 66/370 [00:07<00:39,  7.67it/s]
 18%|#8        | 67/370 [00:08<00:38,  7.90it/s]
 18%|#8        | 68/370 [00:08<00:37,  8.07it/s]
 19%|#8        | 69/370 [00:08<00:36,  8.19it/s]
 19%|#8        | 70/370 [00:08<00:36,  8.27it/s]
 19%|#9        | 71/370 [00:08<00:36,  8.24it/s]
 19%|#9        | 72/370 [00:08<00:39,  7.57it/s]
 20%|#9        | 73/370 [00:08<00:37,  7.83it/s]
 20%|##        | 74/370 [00:08<00:36,  8.01it/s]
 20%|##        | 75/370 [00:09<00:36,  8.15it/s]
 21%|##        | 76/370 [00:09<00:35,  8.24it/s]
 21%|##        | 77/370 [00:09<00:35,  8.32it/s]
 21%|##1       | 78/370 [00:09<00:34,  8.39it/s]
 21%|##1       | 79/370 [00:09<00:34,  8.43it/s]
 22%|##1       | 80/370 [00:09<00:34,  8.47it/s]
 22%|##1       | 81/370 [00:09<00:34,  8.50it/s]
 22%|##2       | 82/370 [00:09<00:33,  8.51it/s]
 22%|##2       | 83/370 [00:10<00:33,  8.52it/s]
 23%|##2       | 84/370 [00:10<00:33,  8.53it/s]
 23%|##2       | 85/370 [00:10<00:33,  8.52it/s]
 23%|##3       | 86/370 [00:10<00:36,  7.76it/s]
 24%|##3       | 87/370 [00:10<00:35,  7.97it/s]
 24%|##3       | 88/370 [00:10<00:34,  8.11it/s]
 24%|##4       | 89/370 [00:10<00:34,  8.24it/s]
 24%|##4       | 90/370 [00:10<00:33,  8.31it/s]
 25%|##4       | 91/370 [00:10<00:33,  8.38it/s]
 25%|##4       | 92/370 [00:11<00:33,  8.41it/s]
 25%|##5       | 93/370 [00:11<00:32,  8.43it/s]
 25%|##5       | 94/370 [00:11<00:35,  7.70it/s]
 26%|##5       | 95/370 [00:11<00:34,  7.92it/s]
 26%|##5       | 96/370 [00:11<00:33,  8.08it/s]
 26%|##6       | 97/370 [00:11<00:33,  8.20it/s]
 26%|##6       | 98/370 [00:11<00:32,  8.30it/s]
 27%|##6       | 99/370 [00:11<00:32,  8.36it/s]
 27%|##7       | 100/370 [00:12<00:32,  8.41it/s]
 27%|##7       | 101/370 [00:12<00:31,  8.43it/s]
 28%|##7       | 102/370 [00:12<00:34,  7.70it/s]
 28%|##7       | 103/370 [00:12<00:33,  7.92it/s]
 28%|##8       | 104/370 [00:12<00:35,  7.41it/s]
 28%|##8       | 105/370 [00:12<00:34,  7.70it/s]
 29%|##8       | 106/370 [00:12<00:33,  7.92it/s]
 29%|##8       | 107/370 [00:12<00:32,  8.09it/s]
 29%|##9       | 108/370 [00:13<00:31,  8.21it/s]
 29%|##9       | 109/370 [00:13<00:31,  8.29it/s]
 30%|##9       | 110/370 [00:13<00:31,  8.33it/s]
 30%|###       | 111/370 [00:13<00:30,  8.36it/s]
 30%|###       | 112/370 [00:13<00:30,  8.41it/s]
 31%|###       | 113/370 [00:13<00:30,  8.44it/s]
 31%|###       | 114/370 [00:13<00:30,  8.41it/s]
 31%|###1      | 115/370 [00:13<00:33,  7.63it/s]
 31%|###1      | 116/370 [00:14<00:32,  7.79it/s]
 32%|###1      | 117/370 [00:14<00:31,  7.95it/s]
 32%|###1      | 118/370 [00:14<00:31,  8.08it/s]
 32%|###2      | 119/370 [00:14<00:30,  8.16it/s]
 32%|###2      | 120/370 [00:14<00:30,  8.24it/s]
 33%|###2      | 121/370 [00:14<00:30,  8.28it/s]
 33%|###2      | 122/370 [00:14<00:30,  8.25it/s]
 33%|###3      | 123/370 [00:14<00:29,  8.28it/s]
 34%|###3      | 124/370 [00:15<00:29,  8.32it/s]
 34%|###3      | 125/370 [00:15<00:29,  8.31it/s]
 34%|###4      | 126/370 [00:15<00:29,  8.30it/s]
 34%|###4      | 127/370 [00:15<00:29,  8.32it/s]
 35%|###4      | 128/370 [00:15<00:29,  8.31it/s]
 35%|###4      | 129/370 [00:15<00:28,  8.35it/s]
 35%|###5      | 130/370 [00:15<00:28,  8.38it/s]
 35%|###5      | 131/370 [00:15<00:28,  8.41it/s]
 36%|###5      | 132/370 [00:16<00:28,  8.42it/s]
 36%|###5      | 133/370 [00:16<00:28,  8.44it/s]
 36%|###6      | 134/370 [00:16<00:28,  8.40it/s]
 36%|###6      | 135/370 [00:16<00:27,  8.41it/s]
 37%|###6      | 136/370 [00:16<00:28,  8.34it/s]
 37%|###7      | 137/370 [00:16<00:27,  8.37it/s]
 37%|###7      | 138/370 [00:16<00:27,  8.39it/s]
 38%|###7      | 139/370 [00:16<00:27,  8.42it/s]
 38%|###7      | 140/370 [00:16<00:27,  8.44it/s]
 38%|###8      | 141/370 [00:17<00:27,  8.44it/s]
 38%|###8      | 142/370 [00:17<00:26,  8.45it/s]
 39%|###8      | 143/370 [00:17<00:26,  8.46it/s]
 39%|###8      | 144/370 [00:17<00:26,  8.46it/s]
 39%|###9      | 145/370 [00:17<00:26,  8.48it/s]
 39%|###9      | 146/370 [00:17<00:26,  8.46it/s]
 40%|###9      | 147/370 [00:17<00:26,  8.46it/s]
 40%|####      | 148/370 [00:17<00:26,  8.46it/s]
 40%|####      | 149/370 [00:18<00:26,  8.46it/s]
 41%|####      | 150/370 [00:18<00:26,  8.46it/s]
 41%|####      | 151/370 [00:18<00:28,  7.72it/s]
 41%|####1     | 152/370 [00:18<00:27,  7.93it/s]
 41%|####1     | 153/370 [00:18<00:26,  8.08it/s]
 42%|####1     | 154/370 [00:18<00:26,  8.13it/s]
 42%|####1     | 155/370 [00:18<00:26,  8.20it/s]
 42%|####2     | 156/370 [00:18<00:25,  8.28it/s]
 42%|####2     | 157/370 [00:19<00:25,  8.32it/s]
 43%|####2     | 158/370 [00:19<00:25,  8.36it/s]
 43%|####2     | 159/370 [00:19<00:25,  8.39it/s]
 43%|####3     | 160/370 [00:19<00:24,  8.41it/s]
 44%|####3     | 161/370 [00:19<00:24,  8.42it/s]
 44%|####3     | 162/370 [00:19<00:24,  8.43it/s]
 44%|####4     | 163/370 [00:19<00:24,  8.45it/s]
 44%|####4     | 164/370 [00:19<00:24,  8.46it/s]
 45%|####4     | 165/370 [00:19<00:24,  8.48it/s]
 45%|####4     | 166/370 [00:20<00:24,  8.48it/s]
 45%|####5     | 167/370 [00:20<00:23,  8.49it/s]
 45%|####5     | 168/370 [00:20<00:23,  8.44it/s]
 46%|####5     | 169/370 [00:20<00:26,  7.71it/s]
 46%|####5     | 170/370 [00:20<00:25,  7.92it/s]
 46%|####6     | 171/370 [00:20<00:24,  8.08it/s]
 46%|####6     | 172/370 [00:20<00:24,  8.21it/s]
 47%|####6     | 173/370 [00:20<00:23,  8.28it/s]
 47%|####7     | 174/370 [00:21<00:23,  8.34it/s]
 47%|####7     | 175/370 [00:21<00:23,  8.38it/s]
 48%|####7     | 176/370 [00:21<00:23,  8.41it/s]
 48%|####7     | 177/370 [00:21<00:23,  8.39it/s]
 48%|####8     | 178/370 [00:21<00:22,  8.38it/s]
 48%|####8     | 179/370 [00:21<00:22,  8.38it/s]
 49%|####8     | 180/370 [00:21<00:22,  8.36it/s]
 49%|####8     | 181/370 [00:21<00:22,  8.37it/s]
 49%|####9     | 182/370 [00:22<00:22,  8.37it/s]
 49%|####9     | 183/370 [00:22<00:22,  8.38it/s]
 50%|####9     | 184/370 [00:22<00:22,  8.38it/s]
 50%|#####     | 185/370 [00:22<00:22,  8.39it/s]
 50%|#####     | 186/370 [00:22<00:21,  8.40it/s]
 51%|#####     | 187/370 [00:22<00:21,  8.39it/s]
 51%|#####     | 188/370 [00:22<00:21,  8.41it/s]
 51%|#####1    | 189/370 [00:22<00:23,  7.62it/s]
 51%|#####1    | 190/370 [00:23<00:22,  7.85it/s]
 52%|#####1    | 191/370 [00:23<00:22,  8.02it/s]
 52%|#####1    | 192/370 [00:23<00:21,  8.14it/s]
 52%|#####2    | 193/370 [00:23<00:21,  8.21it/s]
 52%|#####2    | 194/370 [00:23<00:21,  8.27it/s]
 53%|#####2    | 195/370 [00:23<00:21,  8.32it/s]
 53%|#####2    | 196/370 [00:23<00:20,  8.36it/s]
 53%|#####3    | 197/370 [00:23<00:20,  8.38it/s]
 54%|#####3    | 198/370 [00:23<00:20,  8.38it/s]
 54%|#####3    | 199/370 [00:24<00:20,  8.40it/s]
 54%|#####4    | 200/370 [00:24<00:20,  8.41it/s]
 54%|#####4    | 201/370 [00:24<00:20,  8.42it/s]
 55%|#####4    | 202/370 [00:24<00:19,  8.45it/s]
 55%|#####4    | 203/370 [00:24<00:19,  8.44it/s]
 55%|#####5    | 204/370 [00:24<00:19,  8.43it/s]
 55%|#####5    | 205/370 [00:24<00:19,  8.44it/s]
 56%|#####5    | 206/370 [00:24<00:19,  8.45it/s]
 56%|#####5    | 207/370 [00:25<00:19,  8.41it/s]
 56%|#####6    | 208/370 [00:25<00:19,  8.44it/s]
 56%|#####6    | 209/370 [00:25<00:19,  8.35it/s]
 57%|#####6    | 210/370 [00:25<00:19,  8.38it/s]
 57%|#####7    | 211/370 [00:25<00:18,  8.39it/s]
 57%|#####7    | 212/370 [00:25<00:18,  8.39it/s]
 58%|#####7    | 213/370 [00:25<00:18,  8.42it/s]
 58%|#####7    | 214/370 [00:25<00:18,  8.43it/s]
 58%|#####8    | 215/370 [00:25<00:18,  8.45it/s]
 58%|#####8    | 216/370 [00:26<00:18,  8.46it/s]
 59%|#####8    | 217/370 [00:26<00:18,  8.47it/s]
 59%|#####8    | 218/370 [00:26<00:17,  8.46it/s]
 59%|#####9    | 219/370 [00:26<00:17,  8.45it/s]
 59%|#####9    | 220/370 [00:26<00:17,  8.46it/s]
 60%|#####9    | 221/370 [00:26<00:17,  8.44it/s]
 60%|######    | 222/370 [00:26<00:17,  8.44it/s]
 60%|######    | 223/370 [00:26<00:17,  8.45it/s]
 61%|######    | 224/370 [00:27<00:17,  8.46it/s]
 61%|######    | 225/370 [00:27<00:17,  8.47it/s]
 61%|######1   | 226/370 [00:27<00:16,  8.48it/s]
 61%|######1   | 227/370 [00:27<00:18,  7.73it/s]
 62%|######1   | 228/370 [00:27<00:17,  7.92it/s]
 62%|######1   | 229/370 [00:27<00:17,  8.09it/s]
 62%|######2   | 230/370 [00:27<00:17,  8.19it/s]
 62%|######2   | 231/370 [00:27<00:16,  8.27it/s]
 63%|######2   | 232/370 [00:28<00:16,  8.32it/s]
 63%|######2   | 233/370 [00:28<00:16,  8.37it/s]
 63%|######3   | 234/370 [00:28<00:16,  8.40it/s]
 64%|######3   | 235/370 [00:28<00:16,  8.42it/s]
 64%|######3   | 236/370 [00:28<00:15,  8.44it/s]
 64%|######4   | 237/370 [00:28<00:15,  8.44it/s]
 64%|######4   | 238/370 [00:28<00:15,  8.44it/s]
 65%|######4   | 239/370 [00:28<00:15,  8.44it/s]
 65%|######4   | 240/370 [00:28<00:15,  8.35it/s]
 65%|######5   | 241/370 [00:29<00:17,  7.58it/s]
 65%|######5   | 242/370 [00:29<00:16,  7.63it/s]
 66%|######5   | 243/370 [00:29<00:16,  7.83it/s]
 66%|######5   | 244/370 [00:29<00:15,  7.96it/s]
 66%|######6   | 245/370 [00:29<00:15,  8.03it/s]
 66%|######6   | 246/370 [00:29<00:15,  8.14it/s]
 67%|######6   | 247/370 [00:29<00:14,  8.25it/s]
 67%|######7   | 248/370 [00:29<00:14,  8.33it/s]
 67%|######7   | 249/370 [00:30<00:14,  8.39it/s]
 68%|######7   | 250/370 [00:30<00:14,  8.39it/s]
 68%|######7   | 251/370 [00:30<00:14,  8.40it/s]
 68%|######8   | 252/370 [00:30<00:14,  8.20it/s]
 68%|######8   | 253/370 [00:30<00:14,  8.29it/s]
 69%|######8   | 254/370 [00:30<00:13,  8.33it/s]
 69%|######8   | 255/370 [00:30<00:13,  8.33it/s]
 69%|######9   | 256/370 [00:30<00:13,  8.35it/s]
 69%|######9   | 257/370 [00:31<00:13,  8.35it/s]
 70%|######9   | 258/370 [00:31<00:13,  8.28it/s]
 70%|#######   | 259/370 [00:31<00:13,  8.27it/s]
 70%|#######   | 260/370 [00:31<00:13,  8.29it/s]
 71%|#######   | 261/370 [00:31<00:13,  8.28it/s]
 71%|#######   | 262/370 [00:31<00:12,  8.36it/s]
 71%|#######1  | 263/370 [00:31<00:12,  8.41it/s]
 71%|#######1  | 264/370 [00:31<00:12,  8.44it/s]
 72%|#######1  | 265/370 [00:32<00:12,  8.47it/s]
 72%|#######1  | 266/370 [00:32<00:12,  8.49it/s]
 72%|#######2  | 267/370 [00:32<00:12,  8.46it/s]
 72%|#######2  | 268/370 [00:32<00:12,  8.46it/s]
 73%|#######2  | 269/370 [00:32<00:11,  8.45it/s]
 73%|#######2  | 270/370 [00:32<00:11,  8.47it/s]
 73%|#######3  | 271/370 [00:32<00:11,  8.45it/s]
 74%|#######3  | 272/370 [00:32<00:11,  8.38it/s]
 74%|#######3  | 273/370 [00:32<00:11,  8.40it/s]
 74%|#######4  | 274/370 [00:33<00:11,  8.38it/s]
 74%|#######4  | 275/370 [00:33<00:11,  8.37it/s]
 75%|#######4  | 276/370 [00:33<00:11,  8.33it/s]
 75%|#######4  | 277/370 [00:33<00:11,  8.36it/s]
 75%|#######5  | 278/370 [00:33<00:11,  8.34it/s]
 75%|#######5  | 279/370 [00:33<00:10,  8.40it/s]
 76%|#######5  | 280/370 [00:33<00:10,  8.43it/s]
 76%|#######5  | 281/370 [00:33<00:10,  8.46it/s]
 76%|#######6  | 282/370 [00:34<00:10,  8.47it/s]
 76%|#######6  | 283/370 [00:34<00:10,  8.48it/s]
 77%|#######6  | 284/370 [00:34<00:10,  8.44it/s]
 77%|#######7  | 285/370 [00:34<00:10,  8.46it/s]
 77%|#######7  | 286/370 [00:34<00:09,  8.45it/s]
 78%|#######7  | 287/370 [00:34<00:09,  8.47it/s]
 78%|#######7  | 288/370 [00:34<00:09,  8.41it/s]
 78%|#######8  | 289/370 [00:34<00:09,  8.37it/s]
 78%|#######8  | 290/370 [00:34<00:09,  8.37it/s]
 79%|#######8  | 291/370 [00:35<00:09,  8.38it/s]
 79%|#######8  | 292/370 [00:35<00:09,  8.34it/s]
 79%|#######9  | 293/370 [00:35<00:09,  8.31it/s]
 79%|#######9  | 294/370 [00:35<00:09,  8.36it/s]
 80%|#######9  | 295/370 [00:35<00:09,  8.33it/s]
 80%|########  | 296/370 [00:35<00:08,  8.38it/s]
 80%|########  | 297/370 [00:35<00:08,  8.41it/s]
 81%|########  | 298/370 [00:35<00:08,  8.37it/s]
 81%|########  | 299/370 [00:36<00:08,  8.37it/s]
 81%|########1 | 300/370 [00:36<00:08,  8.38it/s]
 81%|########1 | 301/370 [00:36<00:08,  8.38it/s]
 82%|########1 | 302/370 [00:36<00:08,  8.41it/s]
 82%|########1 | 303/370 [00:36<00:07,  8.40it/s]
 82%|########2 | 304/370 [00:36<00:07,  8.42it/s]
 82%|########2 | 305/370 [00:36<00:07,  8.37it/s]
 83%|########2 | 306/370 [00:36<00:07,  8.34it/s]
 83%|########2 | 307/370 [00:37<00:07,  8.34it/s]
 83%|########3 | 308/370 [00:37<00:07,  8.39it/s]
 84%|########3 | 309/370 [00:37<00:07,  8.35it/s]
 84%|########3 | 310/370 [00:37<00:07,  8.33it/s]
 84%|########4 | 311/370 [00:37<00:07,  8.30it/s]
 84%|########4 | 312/370 [00:37<00:06,  8.32it/s]
 85%|########4 | 313/370 [00:37<00:06,  8.36it/s]
 85%|########4 | 314/370 [00:37<00:06,  8.39it/s]
 85%|########5 | 315/370 [00:37<00:06,  8.41it/s]
 85%|########5 | 316/370 [00:38<00:06,  8.42it/s]
 86%|########5 | 317/370 [00:38<00:06,  8.41it/s]
 86%|########5 | 318/370 [00:38<00:06,  8.40it/s]
 86%|########6 | 319/370 [00:38<00:06,  8.38it/s]
 86%|########6 | 320/370 [00:38<00:05,  8.41it/s]
 87%|########6 | 321/370 [00:38<00:05,  8.40it/s]
 87%|########7 | 322/370 [00:38<00:05,  8.37it/s]
 87%|########7 | 323/370 [00:38<00:05,  8.36it/s]
 88%|########7 | 324/370 [00:39<00:05,  8.35it/s]
 88%|########7 | 325/370 [00:39<00:05,  8.37it/s]
 88%|########8 | 326/370 [00:39<00:05,  8.33it/s]
 88%|########8 | 327/370 [00:39<00:05,  8.33it/s]
 89%|########8 | 328/370 [00:39<00:05,  8.21it/s]
 89%|########8 | 329/370 [00:39<00:04,  8.20it/s]
 89%|########9 | 330/370 [00:39<00:04,  8.26it/s]
 89%|########9 | 331/370 [00:39<00:04,  8.31it/s]
 90%|########9 | 332/370 [00:40<00:04,  8.35it/s]
 90%|######### | 333/370 [00:40<00:04,  8.39it/s]
 90%|######### | 334/370 [00:40<00:04,  8.40it/s]
 91%|######### | 335/370 [00:40<00:04,  8.42it/s]
 91%|######### | 336/370 [00:40<00:04,  8.44it/s]
 91%|#########1| 337/370 [00:40<00:03,  8.44it/s]
 91%|#########1| 338/370 [00:40<00:03,  8.45it/s]
 92%|#########1| 339/370 [00:40<00:03,  8.46it/s]
 92%|#########1| 340/370 [00:40<00:03,  8.47it/s]
 92%|#########2| 341/370 [00:41<00:03,  8.46it/s]
 92%|#########2| 342/370 [00:41<00:03,  8.45it/s]
 93%|#########2| 343/370 [00:41<00:03,  7.64it/s]
 93%|#########2| 344/370 [00:41<00:03,  7.81it/s]
 93%|#########3| 345/370 [00:41<00:03,  7.97it/s]
 94%|#########3| 346/370 [00:41<00:02,  8.13it/s]
 94%|#########3| 347/370 [00:41<00:02,  8.22it/s]
 94%|#########4| 348/370 [00:41<00:02,  8.30it/s]
 94%|#########4| 349/370 [00:42<00:02,  8.35it/s]
 95%|#########4| 350/370 [00:42<00:02,  8.38it/s]
 95%|#########4| 351/370 [00:42<00:02,  8.37it/s]
 95%|#########5| 352/370 [00:42<00:02,  8.40it/s]
 95%|#########5| 353/370 [00:42<00:02,  8.41it/s]
 96%|#########5| 354/370 [00:42<00:01,  8.43it/s]
 96%|#########5| 355/370 [00:42<00:01,  8.39it/s]
 96%|#########6| 356/370 [00:42<00:01,  8.39it/s]
 96%|#########6| 357/370 [00:43<00:01,  8.30it/s]
 97%|#########6| 358/370 [00:43<00:01,  8.28it/s]
 97%|#########7| 359/370 [00:43<00:01,  8.34it/s]
 97%|#########7| 360/370 [00:43<00:01,  7.66it/s]
 98%|#########7| 361/370 [00:43<00:01,  7.89it/s]
 98%|#########7| 362/370 [00:43<00:00,  8.05it/s]
 98%|#########8| 363/370 [00:43<00:00,  8.19it/s]
 98%|#########8| 364/370 [00:43<00:00,  8.28it/s]
 99%|#########8| 365/370 [00:44<00:00,  8.34it/s]
 99%|#########8| 366/370 [00:44<00:00,  8.37it/s]
 99%|#########9| 367/370 [00:44<00:00,  8.40it/s]
 99%|#########9| 368/370 [00:44<00:00,  8.41it/s]
100%|#########9| 369/370 [00:44<00:00,  8.42it/s]
100%|##########| 370/370 [00:44<00:00,  8.43it/s]
100%|##########| 370/370 [00:44<00:00,  8.30it/s]

<shap.explainers._kernel.Kernel object at 0x7fa22ae98d90>
explainer.plot_shap_values()
tetx shap
#explainer.beeswarm_plot()
explainer.summary_plot(plot_type="bar")
tetx shap
explainer.summary_plot(plot_type="dot")
tetx shap
explainer.summary_plot(plot_type="violin")
tetx shap
#explainer.heatmap()
#explainer.waterfall_plot_single_example(27)
explainer.dependence_plot_all_features()
tetx shap
#explainer.scatter_plot_all_features()

Total running time of the script: ( 1 minutes 42.056 seconds)

Gallery generated by Sphinx-Gallery