Note
Go to the end to download the full example code or to run this example in your browser via Binder
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 sul1_utils import get_fitted_model, sul1_data
model = get_fitted_model(Model)
x, y, input_features, output_features = sul1_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/371 [00:00<?, ?it/s]
1%| | 2/371 [00:00<00:35, 10.35it/s]
1%|1 | 4/371 [00:00<00:39, 9.29it/s]
1%|1 | 5/371 [00:00<00:40, 9.05it/s]
2%|1 | 6/371 [00:00<00:40, 8.92it/s]
2%|1 | 7/371 [00:00<00:41, 8.84it/s]
2%|2 | 8/371 [00:00<00:41, 8.76it/s]
2%|2 | 9/371 [00:01<00:41, 8.72it/s]
3%|2 | 10/371 [00:01<00:41, 8.69it/s]
3%|2 | 11/371 [00:01<00:41, 8.67it/s]
3%|3 | 12/371 [00:01<00:41, 8.65it/s]
4%|3 | 13/371 [00:01<00:41, 8.64it/s]
4%|3 | 14/371 [00:01<00:41, 8.64it/s]
4%|4 | 15/371 [00:01<00:41, 8.63it/s]
4%|4 | 16/371 [00:01<00:41, 8.63it/s]
5%|4 | 17/371 [00:01<00:41, 8.63it/s]
5%|4 | 18/371 [00:02<00:40, 8.62it/s]
5%|5 | 19/371 [00:02<00:40, 8.62it/s]
5%|5 | 20/371 [00:02<00:40, 8.62it/s]
6%|5 | 21/371 [00:02<00:40, 8.62it/s]
6%|5 | 22/371 [00:02<00:40, 8.62it/s]
6%|6 | 23/371 [00:02<00:40, 8.62it/s]
6%|6 | 24/371 [00:02<00:40, 8.62it/s]
7%|6 | 25/371 [00:02<00:40, 8.62it/s]
7%|7 | 26/371 [00:02<00:40, 8.62it/s]
7%|7 | 27/371 [00:03<00:39, 8.62it/s]
8%|7 | 28/371 [00:03<00:39, 8.62it/s]
8%|7 | 29/371 [00:03<00:39, 8.62it/s]
8%|8 | 30/371 [00:03<00:39, 8.62it/s]
8%|8 | 31/371 [00:03<00:39, 8.62it/s]
9%|8 | 32/371 [00:03<00:39, 8.62it/s]
9%|8 | 33/371 [00:03<00:39, 8.62it/s]
9%|9 | 34/371 [00:03<00:39, 8.62it/s]
9%|9 | 35/371 [00:04<00:38, 8.62it/s]
10%|9 | 36/371 [00:04<00:38, 8.62it/s]
10%|9 | 37/371 [00:04<00:38, 8.62it/s]
10%|# | 38/371 [00:04<00:38, 8.62it/s]
11%|# | 39/371 [00:04<00:38, 8.62it/s]
11%|# | 40/371 [00:04<00:38, 8.62it/s]
11%|#1 | 41/371 [00:04<00:38, 8.62it/s]
11%|#1 | 42/371 [00:04<00:38, 8.62it/s]
12%|#1 | 43/371 [00:04<00:38, 8.62it/s]
12%|#1 | 44/371 [00:05<00:37, 8.62it/s]
12%|#2 | 45/371 [00:05<00:37, 8.62it/s]
12%|#2 | 46/371 [00:05<00:37, 8.62it/s]
13%|#2 | 47/371 [00:05<00:37, 8.62it/s]
13%|#2 | 48/371 [00:05<00:37, 8.62it/s]
13%|#3 | 49/371 [00:05<00:37, 8.62it/s]
13%|#3 | 50/371 [00:05<00:37, 8.62it/s]
14%|#3 | 51/371 [00:05<00:37, 8.62it/s]
14%|#4 | 52/371 [00:05<00:37, 8.62it/s]
14%|#4 | 53/371 [00:06<00:36, 8.62it/s]
15%|#4 | 54/371 [00:06<00:36, 8.62it/s]
15%|#4 | 55/371 [00:06<00:36, 8.62it/s]
15%|#5 | 56/371 [00:06<00:36, 8.62it/s]
15%|#5 | 57/371 [00:06<00:36, 8.61it/s]
16%|#5 | 58/371 [00:06<00:36, 8.62it/s]
16%|#5 | 59/371 [00:06<00:36, 8.62it/s]
16%|#6 | 60/371 [00:06<00:36, 8.62it/s]
16%|#6 | 61/371 [00:07<00:35, 8.62it/s]
17%|#6 | 62/371 [00:07<00:35, 8.62it/s]
17%|#6 | 63/371 [00:07<00:35, 8.62it/s]
17%|#7 | 64/371 [00:07<00:35, 8.62it/s]
18%|#7 | 65/371 [00:07<00:35, 8.62it/s]
18%|#7 | 66/371 [00:07<00:35, 8.62it/s]
18%|#8 | 67/371 [00:07<00:35, 8.62it/s]
18%|#8 | 68/371 [00:07<00:35, 8.62it/s]
19%|#8 | 69/371 [00:07<00:35, 8.62it/s]
19%|#8 | 70/371 [00:08<00:34, 8.62it/s]
19%|#9 | 71/371 [00:08<00:34, 8.62it/s]
19%|#9 | 72/371 [00:08<00:34, 8.62it/s]
20%|#9 | 73/371 [00:08<00:34, 8.62it/s]
20%|#9 | 74/371 [00:08<00:34, 8.62it/s]
20%|## | 75/371 [00:08<00:34, 8.62it/s]
20%|## | 76/371 [00:08<00:34, 8.62it/s]
21%|## | 77/371 [00:08<00:34, 8.62it/s]
21%|##1 | 78/371 [00:09<00:33, 8.62it/s]
21%|##1 | 79/371 [00:09<00:33, 8.62it/s]
22%|##1 | 80/371 [00:09<00:33, 8.60it/s]
22%|##1 | 81/371 [00:09<00:33, 8.63it/s]
22%|##2 | 82/371 [00:09<00:33, 8.63it/s]
22%|##2 | 83/371 [00:09<00:33, 8.63it/s]
23%|##2 | 84/371 [00:09<00:33, 8.62it/s]
23%|##2 | 85/371 [00:09<00:33, 8.62it/s]
23%|##3 | 86/371 [00:09<00:33, 8.62it/s]
23%|##3 | 87/371 [00:10<00:32, 8.62it/s]
24%|##3 | 88/371 [00:10<00:32, 8.62it/s]
24%|##3 | 89/371 [00:10<00:32, 8.62it/s]
24%|##4 | 90/371 [00:10<00:32, 8.62it/s]
25%|##4 | 91/371 [00:10<00:32, 8.62it/s]
25%|##4 | 92/371 [00:10<00:32, 8.62it/s]
25%|##5 | 93/371 [00:10<00:32, 8.62it/s]
25%|##5 | 94/371 [00:10<00:32, 8.62it/s]
26%|##5 | 95/371 [00:10<00:32, 8.62it/s]
26%|##5 | 96/371 [00:11<00:31, 8.62it/s]
26%|##6 | 97/371 [00:11<00:31, 8.62it/s]
26%|##6 | 98/371 [00:11<00:31, 8.62it/s]
27%|##6 | 99/371 [00:11<00:31, 8.62it/s]
27%|##6 | 100/371 [00:11<00:31, 8.62it/s]
27%|##7 | 101/371 [00:11<00:31, 8.62it/s]
27%|##7 | 102/371 [00:11<00:31, 8.60it/s]
28%|##7 | 103/371 [00:11<00:31, 8.63it/s]
28%|##8 | 104/371 [00:12<00:30, 8.62it/s]
28%|##8 | 105/371 [00:12<00:30, 8.63it/s]
29%|##8 | 106/371 [00:12<00:30, 8.62it/s]
29%|##8 | 107/371 [00:12<00:30, 8.62it/s]
29%|##9 | 108/371 [00:12<00:30, 8.62it/s]
29%|##9 | 109/371 [00:12<00:30, 8.62it/s]
30%|##9 | 110/371 [00:12<00:30, 8.62it/s]
30%|##9 | 111/371 [00:12<00:30, 8.62it/s]
30%|### | 112/371 [00:12<00:30, 8.62it/s]
30%|### | 113/371 [00:13<00:29, 8.62it/s]
31%|### | 114/371 [00:13<00:29, 8.62it/s]
31%|### | 115/371 [00:13<00:29, 8.62it/s]
31%|###1 | 116/371 [00:13<00:29, 8.62it/s]
32%|###1 | 117/371 [00:13<00:29, 8.62it/s]
32%|###1 | 118/371 [00:13<00:29, 8.62it/s]
32%|###2 | 119/371 [00:13<00:29, 8.62it/s]
32%|###2 | 120/371 [00:13<00:29, 8.62it/s]
33%|###2 | 121/371 [00:13<00:28, 8.62it/s]
33%|###2 | 122/371 [00:14<00:28, 8.62it/s]
33%|###3 | 123/371 [00:14<00:28, 8.62it/s]
33%|###3 | 124/371 [00:14<00:28, 8.62it/s]
34%|###3 | 125/371 [00:14<00:28, 8.62it/s]
34%|###3 | 126/371 [00:14<00:28, 8.62it/s]
34%|###4 | 127/371 [00:14<00:28, 8.62it/s]
35%|###4 | 128/371 [00:14<00:28, 8.62it/s]
35%|###4 | 129/371 [00:14<00:28, 8.62it/s]
35%|###5 | 130/371 [00:15<00:27, 8.62it/s]
35%|###5 | 131/371 [00:15<00:27, 8.62it/s]
36%|###5 | 132/371 [00:15<00:27, 8.62it/s]
36%|###5 | 133/371 [00:15<00:27, 8.62it/s]
36%|###6 | 134/371 [00:15<00:27, 8.62it/s]
36%|###6 | 135/371 [00:15<00:27, 8.62it/s]
37%|###6 | 136/371 [00:15<00:27, 8.64it/s]
37%|###6 | 137/371 [00:15<00:29, 7.94it/s]
37%|###7 | 138/371 [00:16<00:28, 8.17it/s]
37%|###7 | 139/371 [00:16<00:28, 8.28it/s]
38%|###7 | 140/371 [00:16<00:27, 8.38it/s]
38%|###8 | 141/371 [00:16<00:27, 8.45it/s]
38%|###8 | 142/371 [00:16<00:26, 8.50it/s]
39%|###8 | 143/371 [00:16<00:26, 8.54it/s]
39%|###8 | 144/371 [00:16<00:26, 8.56it/s]
39%|###9 | 145/371 [00:16<00:26, 8.58it/s]
39%|###9 | 146/371 [00:16<00:26, 8.59it/s]
40%|###9 | 147/371 [00:17<00:26, 8.60it/s]
40%|###9 | 148/371 [00:17<00:25, 8.61it/s]
40%|#### | 149/371 [00:17<00:25, 8.61it/s]
40%|#### | 150/371 [00:17<00:27, 7.92it/s]
41%|#### | 151/371 [00:17<00:26, 8.16it/s]
41%|#### | 152/371 [00:17<00:26, 8.29it/s]
41%|####1 | 153/371 [00:17<00:25, 8.39it/s]
42%|####1 | 154/371 [00:17<00:25, 8.46it/s]
42%|####1 | 155/371 [00:18<00:25, 8.51it/s]
42%|####2 | 156/371 [00:18<00:25, 8.54it/s]
42%|####2 | 157/371 [00:18<00:24, 8.56it/s]
43%|####2 | 158/371 [00:18<00:24, 8.58it/s]
43%|####2 | 159/371 [00:18<00:24, 8.59it/s]
43%|####3 | 160/371 [00:18<00:24, 8.60it/s]
43%|####3 | 161/371 [00:18<00:24, 8.61it/s]
44%|####3 | 162/371 [00:18<00:24, 8.61it/s]
44%|####3 | 163/371 [00:18<00:24, 8.61it/s]
44%|####4 | 164/371 [00:19<00:24, 8.62it/s]
44%|####4 | 165/371 [00:19<00:23, 8.62it/s]
45%|####4 | 166/371 [00:19<00:23, 8.62it/s]
45%|####5 | 167/371 [00:19<00:23, 8.62it/s]
45%|####5 | 168/371 [00:19<00:23, 8.62it/s]
46%|####5 | 169/371 [00:19<00:23, 8.62it/s]
46%|####5 | 170/371 [00:19<00:23, 8.62it/s]
46%|####6 | 171/371 [00:19<00:23, 8.62it/s]
46%|####6 | 172/371 [00:19<00:23, 8.62it/s]
47%|####6 | 173/371 [00:20<00:22, 8.62it/s]
47%|####6 | 174/371 [00:20<00:22, 8.62it/s]
47%|####7 | 175/371 [00:20<00:22, 8.62it/s]
47%|####7 | 176/371 [00:20<00:22, 8.62it/s]
48%|####7 | 177/371 [00:20<00:22, 8.62it/s]
48%|####7 | 178/371 [00:20<00:22, 8.62it/s]
48%|####8 | 179/371 [00:20<00:22, 8.62it/s]
49%|####8 | 180/371 [00:20<00:22, 8.62it/s]
49%|####8 | 181/371 [00:21<00:22, 8.62it/s]
49%|####9 | 182/371 [00:21<00:21, 8.62it/s]
49%|####9 | 183/371 [00:21<00:21, 8.62it/s]
50%|####9 | 184/371 [00:21<00:21, 8.62it/s]
50%|####9 | 185/371 [00:21<00:21, 8.62it/s]
50%|##### | 186/371 [00:21<00:21, 8.62it/s]
50%|##### | 187/371 [00:21<00:23, 7.84it/s]
51%|##### | 188/371 [00:21<00:22, 8.11it/s]
51%|##### | 189/371 [00:21<00:22, 8.25it/s]
51%|#####1 | 190/371 [00:22<00:21, 8.36it/s]
51%|#####1 | 191/371 [00:22<00:21, 8.35it/s]
52%|#####1 | 192/371 [00:22<00:21, 8.43it/s]
52%|#####2 | 193/371 [00:22<00:20, 8.49it/s]
52%|#####2 | 194/371 [00:22<00:20, 8.53it/s]
53%|#####2 | 195/371 [00:22<00:20, 8.55it/s]
53%|#####2 | 196/371 [00:22<00:20, 8.58it/s]
53%|#####3 | 197/371 [00:22<00:20, 8.59it/s]
53%|#####3 | 198/371 [00:23<00:20, 8.60it/s]
54%|#####3 | 199/371 [00:23<00:19, 8.60it/s]
54%|#####3 | 200/371 [00:23<00:19, 8.59it/s]
54%|#####4 | 201/371 [00:23<00:19, 8.53it/s]
54%|#####4 | 202/371 [00:23<00:19, 8.56it/s]
55%|#####4 | 203/371 [00:23<00:19, 8.58it/s]
55%|#####4 | 204/371 [00:23<00:19, 8.59it/s]
55%|#####5 | 205/371 [00:23<00:19, 8.58it/s]
56%|#####5 | 206/371 [00:23<00:19, 8.61it/s]
56%|#####5 | 207/371 [00:24<00:19, 8.61it/s]
56%|#####6 | 208/371 [00:24<00:18, 8.61it/s]
56%|#####6 | 209/371 [00:24<00:18, 8.53it/s]
57%|#####6 | 210/371 [00:24<00:18, 8.56it/s]
57%|#####6 | 211/371 [00:24<00:18, 8.57it/s]
57%|#####7 | 212/371 [00:24<00:18, 8.50it/s]
57%|#####7 | 213/371 [00:24<00:18, 8.54it/s]
58%|#####7 | 214/371 [00:24<00:18, 8.56it/s]
58%|#####7 | 215/371 [00:25<00:18, 8.58it/s]
58%|#####8 | 216/371 [00:25<00:17, 8.62it/s]
58%|#####8 | 217/371 [00:25<00:18, 8.50it/s]
59%|#####8 | 218/371 [00:25<00:18, 8.45it/s]
59%|#####9 | 219/371 [00:25<00:17, 8.50it/s]
59%|#####9 | 220/371 [00:25<00:17, 8.54it/s]
60%|#####9 | 221/371 [00:25<00:17, 8.56it/s]
60%|#####9 | 222/371 [00:25<00:17, 8.58it/s]
60%|###### | 223/371 [00:25<00:17, 8.59it/s]
60%|###### | 224/371 [00:26<00:17, 8.60it/s]
61%|###### | 225/371 [00:26<00:16, 8.61it/s]
61%|###### | 226/371 [00:26<00:16, 8.61it/s]
61%|######1 | 227/371 [00:26<00:16, 8.61it/s]
61%|######1 | 228/371 [00:26<00:16, 8.62it/s]
62%|######1 | 229/371 [00:26<00:16, 8.51it/s]
62%|######1 | 230/371 [00:26<00:16, 8.47it/s]
62%|######2 | 231/371 [00:26<00:17, 7.83it/s]
63%|######2 | 232/371 [00:27<00:17, 8.10it/s]
63%|######2 | 233/371 [00:27<00:16, 8.17it/s]
63%|######3 | 234/371 [00:27<00:16, 8.22it/s]
63%|######3 | 235/371 [00:27<00:16, 8.24it/s]
64%|######3 | 236/371 [00:27<00:16, 8.36it/s]
64%|######3 | 237/371 [00:27<00:15, 8.44it/s]
64%|######4 | 238/371 [00:27<00:15, 8.40it/s]
64%|######4 | 239/371 [00:27<00:15, 8.38it/s]
65%|######4 | 240/371 [00:27<00:15, 8.45it/s]
65%|######4 | 241/371 [00:28<00:15, 8.50it/s]
65%|######5 | 242/371 [00:28<00:15, 8.54it/s]
65%|######5 | 243/371 [00:28<00:14, 8.56it/s]
66%|######5 | 244/371 [00:28<00:14, 8.58it/s]
66%|######6 | 245/371 [00:28<00:14, 8.59it/s]
66%|######6 | 246/371 [00:28<00:14, 8.51it/s]
67%|######6 | 247/371 [00:28<00:14, 8.55it/s]
67%|######6 | 248/371 [00:28<00:14, 8.57it/s]
67%|######7 | 249/371 [00:29<00:14, 8.58it/s]
67%|######7 | 250/371 [00:29<00:14, 8.51it/s]
68%|######7 | 251/371 [00:29<00:14, 8.45it/s]
68%|######7 | 252/371 [00:29<00:14, 8.42it/s]
68%|######8 | 253/371 [00:29<00:13, 8.48it/s]
68%|######8 | 254/371 [00:29<00:13, 8.52it/s]
69%|######8 | 255/371 [00:29<00:13, 8.55it/s]
69%|######9 | 256/371 [00:29<00:13, 8.48it/s]
69%|######9 | 257/371 [00:29<00:13, 8.53it/s]
70%|######9 | 258/371 [00:30<00:13, 8.55it/s]
70%|######9 | 259/371 [00:30<00:13, 8.57it/s]
70%|####### | 260/371 [00:30<00:12, 8.59it/s]
70%|####### | 261/371 [00:30<00:12, 8.60it/s]
71%|####### | 262/371 [00:30<00:12, 8.60it/s]
71%|####### | 263/371 [00:30<00:12, 8.52it/s]
71%|#######1 | 264/371 [00:30<00:12, 8.55it/s]
71%|#######1 | 265/371 [00:30<00:12, 8.57it/s]
72%|#######1 | 266/371 [00:31<00:12, 8.59it/s]
72%|#######1 | 267/371 [00:31<00:12, 8.60it/s]
72%|#######2 | 268/371 [00:31<00:11, 8.60it/s]
73%|#######2 | 269/371 [00:31<00:11, 8.61it/s]
73%|#######2 | 270/371 [00:31<00:11, 8.61it/s]
73%|#######3 | 271/371 [00:31<00:11, 8.61it/s]
73%|#######3 | 272/371 [00:31<00:11, 8.62it/s]
74%|#######3 | 273/371 [00:31<00:11, 8.62it/s]
74%|#######3 | 274/371 [00:31<00:11, 8.62it/s]
74%|#######4 | 275/371 [00:32<00:11, 8.62it/s]
74%|#######4 | 276/371 [00:32<00:11, 8.53it/s]
75%|#######4 | 277/371 [00:32<00:10, 8.56it/s]
75%|#######4 | 278/371 [00:32<00:10, 8.57it/s]
75%|#######5 | 279/371 [00:32<00:10, 8.59it/s]
75%|#######5 | 280/371 [00:32<00:10, 8.60it/s]
76%|#######5 | 281/371 [00:32<00:10, 8.61it/s]
76%|#######6 | 282/371 [00:32<00:10, 8.61it/s]
76%|#######6 | 283/371 [00:33<00:10, 8.61it/s]
77%|#######6 | 284/371 [00:33<00:10, 8.62it/s]
77%|#######6 | 285/371 [00:33<00:09, 8.62it/s]
77%|#######7 | 286/371 [00:33<00:09, 8.62it/s]
77%|#######7 | 287/371 [00:33<00:09, 8.62it/s]
78%|#######7 | 288/371 [00:33<00:09, 8.62it/s]
78%|#######7 | 289/371 [00:33<00:09, 8.62it/s]
78%|#######8 | 290/371 [00:33<00:09, 8.62it/s]
78%|#######8 | 291/371 [00:33<00:09, 8.62it/s]
79%|#######8 | 292/371 [00:34<00:09, 8.62it/s]
79%|#######8 | 293/371 [00:34<00:09, 8.63it/s]
79%|#######9 | 294/371 [00:34<00:08, 8.62it/s]
80%|#######9 | 295/371 [00:34<00:08, 8.62it/s]
80%|#######9 | 296/371 [00:34<00:08, 8.62it/s]
80%|######## | 297/371 [00:34<00:08, 8.62it/s]
80%|######## | 298/371 [00:34<00:08, 8.62it/s]
81%|######## | 299/371 [00:34<00:08, 8.62it/s]
81%|######## | 300/371 [00:34<00:08, 8.62it/s]
81%|########1 | 301/371 [00:35<00:08, 8.62it/s]
81%|########1 | 302/371 [00:35<00:08, 8.62it/s]
82%|########1 | 303/371 [00:35<00:07, 8.63it/s]
82%|########1 | 304/371 [00:35<00:07, 8.62it/s]
82%|########2 | 305/371 [00:35<00:07, 8.62it/s]
82%|########2 | 306/371 [00:35<00:07, 8.62it/s]
83%|########2 | 307/371 [00:35<00:07, 8.62it/s]
83%|########3 | 308/371 [00:35<00:07, 8.62it/s]
83%|########3 | 309/371 [00:36<00:07, 8.62it/s]
84%|########3 | 310/371 [00:36<00:07, 8.62it/s]
84%|########3 | 311/371 [00:36<00:06, 8.62it/s]
84%|########4 | 312/371 [00:36<00:06, 8.62it/s]
84%|########4 | 313/371 [00:36<00:06, 8.62it/s]
85%|########4 | 314/371 [00:36<00:06, 8.62it/s]
85%|########4 | 315/371 [00:36<00:06, 8.63it/s]
85%|########5 | 316/371 [00:36<00:06, 8.62it/s]
85%|########5 | 317/371 [00:36<00:06, 8.62it/s]
86%|########5 | 318/371 [00:37<00:06, 8.62it/s]
86%|########5 | 319/371 [00:37<00:06, 8.53it/s]
86%|########6 | 320/371 [00:37<00:06, 8.49it/s]
87%|########6 | 321/371 [00:37<00:05, 8.42it/s]
87%|########6 | 322/371 [00:37<00:05, 8.48it/s]
87%|########7 | 323/371 [00:37<00:05, 8.52it/s]
87%|########7 | 324/371 [00:37<00:05, 8.55it/s]
88%|########7 | 325/371 [00:37<00:05, 8.57it/s]
88%|########7 | 326/371 [00:38<00:05, 8.59it/s]
88%|########8 | 327/371 [00:38<00:05, 8.60it/s]
88%|########8 | 328/371 [00:38<00:04, 8.60it/s]
89%|########8 | 329/371 [00:38<00:04, 8.61it/s]
89%|########8 | 330/371 [00:38<00:04, 8.61it/s]
89%|########9 | 331/371 [00:38<00:04, 8.62it/s]
89%|########9 | 332/371 [00:38<00:04, 8.62it/s]
90%|########9 | 333/371 [00:38<00:04, 8.62it/s]
90%|######### | 334/371 [00:38<00:04, 8.62it/s]
90%|######### | 335/371 [00:39<00:04, 8.62it/s]
91%|######### | 336/371 [00:39<00:04, 8.62it/s]
91%|######### | 337/371 [00:39<00:03, 8.62it/s]
91%|#########1| 338/371 [00:39<00:03, 8.62it/s]
91%|#########1| 339/371 [00:39<00:03, 8.67it/s]
92%|#########1| 340/371 [00:39<00:03, 8.60it/s]
92%|#########1| 341/371 [00:39<00:03, 8.61it/s]
92%|#########2| 342/371 [00:39<00:03, 8.61it/s]
92%|#########2| 343/371 [00:39<00:03, 8.61it/s]
93%|#########2| 344/371 [00:40<00:03, 8.62it/s]
93%|#########2| 345/371 [00:40<00:03, 8.62it/s]
93%|#########3| 346/371 [00:40<00:02, 8.62it/s]
94%|#########3| 347/371 [00:40<00:02, 8.62it/s]
94%|#########3| 348/371 [00:40<00:02, 8.62it/s]
94%|#########4| 349/371 [00:40<00:02, 8.64it/s]
94%|#########4| 350/371 [00:40<00:02, 8.61it/s]
95%|#########4| 351/371 [00:40<00:02, 8.62it/s]
95%|#########4| 352/371 [00:41<00:02, 8.62it/s]
95%|#########5| 353/371 [00:41<00:02, 8.62it/s]
95%|#########5| 354/371 [00:41<00:01, 8.62it/s]
96%|#########5| 355/371 [00:41<00:01, 8.62it/s]
96%|#########5| 356/371 [00:41<00:01, 8.62it/s]
96%|#########6| 357/371 [00:41<00:01, 8.62it/s]
96%|#########6| 358/371 [00:41<00:01, 8.62it/s]
97%|#########6| 359/371 [00:41<00:01, 8.64it/s]
97%|#########7| 360/371 [00:41<00:01, 8.61it/s]
97%|#########7| 361/371 [00:42<00:01, 8.62it/s]
98%|#########7| 362/371 [00:42<00:01, 8.62it/s]
98%|#########7| 363/371 [00:42<00:00, 8.44it/s]
98%|#########8| 364/371 [00:42<00:00, 8.41it/s]
98%|#########8| 365/371 [00:42<00:00, 8.47it/s]
99%|#########8| 366/371 [00:42<00:00, 8.52it/s]
99%|#########8| 367/371 [00:42<00:00, 8.55it/s]
99%|#########9| 368/371 [00:42<00:00, 8.57it/s]
99%|#########9| 369/371 [00:43<00:00, 8.59it/s]
100%|#########9| 370/371 [00:43<00:00, 8.60it/s]
100%|##########| 371/371 [00:43<00:00, 8.60it/s]
100%|##########| 371/371 [00:43<00:00, 8.58it/s]
<shap.explainers._kernel.Kernel object at 0x7fa22c60e9d0>
explainer.plot_shap_values()

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")

explainer.summary_plot(plot_type="bar")

explainer.summary_plot(plot_type="violin")

explainer.dependence_plot_all_features()

# 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/371 [00:00<?, ?it/s]
1%| | 2/371 [00:00<00:34, 10.58it/s]
1%|1 | 4/371 [00:00<00:39, 9.33it/s]
1%|1 | 5/371 [00:00<00:40, 9.11it/s]
2%|1 | 6/371 [00:00<00:40, 8.96it/s]
2%|1 | 7/371 [00:00<00:41, 8.86it/s]
2%|2 | 8/371 [00:00<00:41, 8.78it/s]
2%|2 | 9/371 [00:01<00:41, 8.73it/s]
3%|2 | 10/371 [00:01<00:41, 8.70it/s]
3%|2 | 11/371 [00:01<00:41, 8.68it/s]
3%|3 | 12/371 [00:01<00:41, 8.66it/s]
4%|3 | 13/371 [00:01<00:41, 8.65it/s]
4%|3 | 14/371 [00:01<00:41, 8.64it/s]
4%|4 | 15/371 [00:01<00:41, 8.63it/s]
4%|4 | 16/371 [00:01<00:41, 8.63it/s]
5%|4 | 17/371 [00:01<00:41, 8.63it/s]
5%|4 | 18/371 [00:02<00:40, 8.63it/s]
5%|5 | 19/371 [00:02<00:40, 8.62it/s]
5%|5 | 20/371 [00:02<00:40, 8.62it/s]
6%|5 | 21/371 [00:02<00:40, 8.62it/s]
6%|5 | 22/371 [00:02<00:40, 8.62it/s]
6%|6 | 23/371 [00:02<00:40, 8.62it/s]
6%|6 | 24/371 [00:02<00:40, 8.62it/s]
7%|6 | 25/371 [00:02<00:40, 8.62it/s]
7%|7 | 26/371 [00:02<00:40, 8.62it/s]
7%|7 | 27/371 [00:03<00:39, 8.62it/s]
8%|7 | 28/371 [00:03<00:39, 8.62it/s]
8%|7 | 29/371 [00:03<00:39, 8.62it/s]
8%|8 | 30/371 [00:03<00:39, 8.62it/s]
8%|8 | 31/371 [00:03<00:39, 8.62it/s]
9%|8 | 32/371 [00:03<00:39, 8.62it/s]
9%|8 | 33/371 [00:03<00:39, 8.62it/s]
9%|9 | 34/371 [00:03<00:39, 8.62it/s]
9%|9 | 35/371 [00:04<00:38, 8.62it/s]
10%|9 | 36/371 [00:04<00:38, 8.62it/s]
10%|9 | 37/371 [00:04<00:38, 8.62it/s]
10%|# | 38/371 [00:04<00:38, 8.62it/s]
11%|# | 39/371 [00:04<00:38, 8.62it/s]
11%|# | 40/371 [00:04<00:38, 8.62it/s]
11%|#1 | 41/371 [00:04<00:38, 8.62it/s]
11%|#1 | 42/371 [00:04<00:38, 8.62it/s]
12%|#1 | 43/371 [00:04<00:38, 8.62it/s]
12%|#1 | 44/371 [00:05<00:37, 8.62it/s]
12%|#2 | 45/371 [00:05<00:37, 8.62it/s]
12%|#2 | 46/371 [00:05<00:37, 8.62it/s]
13%|#2 | 47/371 [00:05<00:37, 8.62it/s]
13%|#2 | 48/371 [00:05<00:37, 8.62it/s]
13%|#3 | 49/371 [00:05<00:37, 8.62it/s]
13%|#3 | 50/371 [00:05<00:37, 8.62it/s]
14%|#3 | 51/371 [00:05<00:37, 8.62it/s]
14%|#4 | 52/371 [00:05<00:36, 8.63it/s]
14%|#4 | 53/371 [00:06<00:36, 8.62it/s]
15%|#4 | 54/371 [00:06<00:36, 8.62it/s]
15%|#4 | 55/371 [00:06<00:36, 8.62it/s]
15%|#5 | 56/371 [00:06<00:36, 8.62it/s]
15%|#5 | 57/371 [00:06<00:36, 8.62it/s]
16%|#5 | 58/371 [00:06<00:36, 8.62it/s]
16%|#5 | 59/371 [00:06<00:36, 8.53it/s]
16%|#6 | 60/371 [00:06<00:36, 8.56it/s]
16%|#6 | 61/371 [00:07<00:36, 8.58it/s]
17%|#6 | 62/371 [00:07<00:35, 8.59it/s]
17%|#6 | 63/371 [00:07<00:35, 8.60it/s]
17%|#7 | 64/371 [00:07<00:35, 8.61it/s]
18%|#7 | 65/371 [00:07<00:35, 8.61it/s]
18%|#7 | 66/371 [00:07<00:35, 8.61it/s]
18%|#8 | 67/371 [00:07<00:35, 8.62it/s]
18%|#8 | 68/371 [00:07<00:35, 8.62it/s]
19%|#8 | 69/371 [00:07<00:35, 8.62it/s]
19%|#8 | 70/371 [00:08<00:34, 8.62it/s]
19%|#9 | 71/371 [00:08<00:34, 8.62it/s]
19%|#9 | 72/371 [00:08<00:34, 8.62it/s]
20%|#9 | 73/371 [00:08<00:34, 8.62it/s]
20%|#9 | 74/371 [00:08<00:34, 8.62it/s]
20%|## | 75/371 [00:08<00:34, 8.62it/s]
20%|## | 76/371 [00:08<00:34, 8.62it/s]
21%|## | 77/371 [00:08<00:34, 8.62it/s]
21%|##1 | 78/371 [00:09<00:33, 8.62it/s]
21%|##1 | 79/371 [00:09<00:33, 8.62it/s]
22%|##1 | 80/371 [00:09<00:33, 8.62it/s]
22%|##1 | 81/371 [00:09<00:33, 8.62it/s]
22%|##2 | 82/371 [00:09<00:33, 8.64it/s]
22%|##2 | 83/371 [00:09<00:37, 7.64it/s]
23%|##2 | 84/371 [00:09<00:36, 7.86it/s]
23%|##2 | 85/371 [00:09<00:35, 8.08it/s]
23%|##3 | 86/371 [00:09<00:34, 8.23it/s]
23%|##3 | 87/371 [00:10<00:34, 8.34it/s]
24%|##3 | 88/371 [00:10<00:33, 8.43it/s]
24%|##3 | 89/371 [00:10<00:33, 8.48it/s]
24%|##4 | 90/371 [00:10<00:35, 7.85it/s]
25%|##4 | 91/371 [00:10<00:34, 8.10it/s]
25%|##4 | 92/371 [00:10<00:33, 8.25it/s]
25%|##5 | 93/371 [00:10<00:33, 8.36it/s]
25%|##5 | 94/371 [00:10<00:32, 8.43it/s]
26%|##5 | 95/371 [00:11<00:32, 8.49it/s]
26%|##5 | 96/371 [00:11<00:32, 8.53it/s]
26%|##6 | 97/371 [00:11<00:32, 8.56it/s]
26%|##6 | 98/371 [00:11<00:31, 8.58it/s]
27%|##6 | 99/371 [00:11<00:31, 8.66it/s]
27%|##6 | 100/371 [00:11<00:31, 8.67it/s]
27%|##7 | 101/371 [00:11<00:31, 8.65it/s]
27%|##7 | 102/371 [00:11<00:31, 8.64it/s]
28%|##7 | 103/371 [00:11<00:30, 8.66it/s]
28%|##8 | 104/371 [00:12<00:30, 8.63it/s]
28%|##8 | 105/371 [00:12<00:30, 8.62it/s]
29%|##8 | 106/371 [00:12<00:30, 8.62it/s]
29%|##8 | 107/371 [00:12<00:30, 8.62it/s]
29%|##9 | 108/371 [00:12<00:30, 8.62it/s]
29%|##9 | 109/371 [00:12<00:30, 8.62it/s]
30%|##9 | 110/371 [00:12<00:30, 8.62it/s]
30%|##9 | 111/371 [00:12<00:30, 8.62it/s]
30%|### | 112/371 [00:13<00:30, 8.62it/s]
30%|### | 113/371 [00:13<00:29, 8.62it/s]
31%|### | 114/371 [00:13<00:29, 8.62it/s]
31%|### | 115/371 [00:13<00:29, 8.62it/s]
31%|###1 | 116/371 [00:13<00:29, 8.62it/s]
32%|###1 | 117/371 [00:13<00:29, 8.62it/s]
32%|###1 | 118/371 [00:13<00:29, 8.62it/s]
32%|###2 | 119/371 [00:13<00:29, 8.62it/s]
32%|###2 | 120/371 [00:13<00:29, 8.62it/s]
33%|###2 | 121/371 [00:14<00:28, 8.62it/s]
33%|###2 | 122/371 [00:14<00:28, 8.62it/s]
33%|###3 | 123/371 [00:14<00:28, 8.62it/s]
33%|###3 | 124/371 [00:14<00:28, 8.62it/s]
34%|###3 | 125/371 [00:14<00:28, 8.62it/s]
34%|###3 | 126/371 [00:14<00:28, 8.62it/s]
34%|###4 | 127/371 [00:14<00:28, 8.62it/s]
35%|###4 | 128/371 [00:14<00:28, 8.62it/s]
35%|###4 | 129/371 [00:15<00:28, 8.62it/s]
35%|###5 | 130/371 [00:15<00:27, 8.62it/s]
35%|###5 | 131/371 [00:15<00:27, 8.62it/s]
36%|###5 | 132/371 [00:15<00:27, 8.62it/s]
36%|###5 | 133/371 [00:15<00:27, 8.62it/s]
36%|###6 | 134/371 [00:15<00:27, 8.62it/s]
36%|###6 | 135/371 [00:15<00:27, 8.67it/s]
37%|###6 | 136/371 [00:15<00:26, 8.71it/s]
37%|###6 | 137/371 [00:15<00:26, 8.67it/s]
37%|###7 | 138/371 [00:16<00:26, 8.66it/s]
37%|###7 | 139/371 [00:16<00:26, 8.65it/s]
38%|###7 | 140/371 [00:16<00:26, 8.64it/s]
38%|###8 | 141/371 [00:16<00:26, 8.63it/s]
38%|###8 | 142/371 [00:16<00:26, 8.63it/s]
39%|###8 | 143/371 [00:16<00:26, 8.63it/s]
39%|###8 | 144/371 [00:16<00:26, 8.63it/s]
39%|###9 | 145/371 [00:16<00:26, 8.62it/s]
39%|###9 | 146/371 [00:16<00:26, 8.62it/s]
40%|###9 | 147/371 [00:17<00:25, 8.62it/s]
40%|###9 | 148/371 [00:17<00:25, 8.62it/s]
40%|#### | 149/371 [00:17<00:25, 8.62it/s]
40%|#### | 150/371 [00:17<00:25, 8.62it/s]
41%|#### | 151/371 [00:17<00:25, 8.62it/s]
41%|#### | 152/371 [00:17<00:25, 8.62it/s]
41%|####1 | 153/371 [00:17<00:25, 8.62it/s]
42%|####1 | 154/371 [00:17<00:25, 8.62it/s]
42%|####1 | 155/371 [00:18<00:25, 8.62it/s]
42%|####2 | 156/371 [00:18<00:24, 8.62it/s]
42%|####2 | 157/371 [00:18<00:24, 8.62it/s]
43%|####2 | 158/371 [00:18<00:24, 8.62it/s]
43%|####2 | 159/371 [00:18<00:24, 8.62it/s]
43%|####3 | 160/371 [00:18<00:24, 8.62it/s]
43%|####3 | 161/371 [00:18<00:24, 8.62it/s]
44%|####3 | 162/371 [00:18<00:24, 8.64it/s]
44%|####3 | 163/371 [00:18<00:24, 8.61it/s]
44%|####4 | 164/371 [00:19<00:24, 8.62it/s]
44%|####4 | 165/371 [00:19<00:23, 8.62it/s]
45%|####4 | 166/371 [00:19<00:23, 8.62it/s]
45%|####5 | 167/371 [00:19<00:23, 8.62it/s]
45%|####5 | 168/371 [00:19<00:23, 8.62it/s]
46%|####5 | 169/371 [00:19<00:23, 8.62it/s]
46%|####5 | 170/371 [00:19<00:23, 8.62it/s]
46%|####6 | 171/371 [00:19<00:23, 8.62it/s]
46%|####6 | 172/371 [00:19<00:23, 8.62it/s]
47%|####6 | 173/371 [00:20<00:22, 8.62it/s]
47%|####6 | 174/371 [00:20<00:22, 8.62it/s]
47%|####7 | 175/371 [00:20<00:22, 8.62it/s]
47%|####7 | 176/371 [00:20<00:22, 8.62it/s]
48%|####7 | 177/371 [00:20<00:22, 8.62it/s]
48%|####7 | 178/371 [00:20<00:22, 8.62it/s]
48%|####8 | 179/371 [00:20<00:22, 8.62it/s]
49%|####8 | 180/371 [00:20<00:22, 8.62it/s]
49%|####8 | 181/371 [00:21<00:22, 8.62it/s]
49%|####9 | 182/371 [00:21<00:21, 8.60it/s]
49%|####9 | 183/371 [00:21<00:21, 8.63it/s]
50%|####9 | 184/371 [00:21<00:21, 8.63it/s]
50%|####9 | 185/371 [00:21<00:21, 8.62it/s]
50%|##### | 186/371 [00:21<00:21, 8.62it/s]
50%|##### | 187/371 [00:21<00:21, 8.62it/s]
51%|##### | 188/371 [00:21<00:21, 8.62it/s]
51%|##### | 189/371 [00:21<00:21, 8.62it/s]
51%|#####1 | 190/371 [00:22<00:20, 8.62it/s]
51%|#####1 | 191/371 [00:22<00:20, 8.62it/s]
52%|#####1 | 192/371 [00:22<00:20, 8.62it/s]
52%|#####2 | 193/371 [00:22<00:20, 8.62it/s]
52%|#####2 | 194/371 [00:22<00:20, 8.62it/s]
53%|#####2 | 195/371 [00:22<00:20, 8.62it/s]
53%|#####2 | 196/371 [00:22<00:20, 8.62it/s]
53%|#####3 | 197/371 [00:22<00:20, 8.62it/s]
53%|#####3 | 198/371 [00:23<00:20, 8.62it/s]
54%|#####3 | 199/371 [00:23<00:19, 8.62it/s]
54%|#####3 | 200/371 [00:23<00:19, 8.62it/s]
54%|#####4 | 201/371 [00:23<00:19, 8.62it/s]
54%|#####4 | 202/371 [00:23<00:19, 8.62it/s]
55%|#####4 | 203/371 [00:23<00:19, 8.62it/s]
55%|#####4 | 204/371 [00:23<00:19, 8.62it/s]
55%|#####5 | 205/371 [00:23<00:19, 8.62it/s]
56%|#####5 | 206/371 [00:23<00:19, 8.62it/s]
56%|#####5 | 207/371 [00:24<00:19, 8.62it/s]
56%|#####6 | 208/371 [00:24<00:18, 8.61it/s]
56%|#####6 | 209/371 [00:24<00:18, 8.63it/s]
57%|#####6 | 210/371 [00:24<00:18, 8.62it/s]
57%|#####6 | 211/371 [00:24<00:18, 8.62it/s]
57%|#####7 | 212/371 [00:24<00:18, 8.62it/s]
57%|#####7 | 213/371 [00:24<00:18, 8.62it/s]
58%|#####7 | 214/371 [00:24<00:18, 8.62it/s]
58%|#####7 | 215/371 [00:24<00:18, 8.62it/s]
58%|#####8 | 216/371 [00:25<00:17, 8.62it/s]
58%|#####8 | 217/371 [00:25<00:17, 8.62it/s]
59%|#####8 | 218/371 [00:25<00:17, 8.62it/s]
59%|#####9 | 219/371 [00:25<00:17, 8.62it/s]
59%|#####9 | 220/371 [00:25<00:17, 8.62it/s]
60%|#####9 | 221/371 [00:25<00:17, 8.62it/s]
60%|#####9 | 222/371 [00:25<00:17, 8.62it/s]
60%|###### | 223/371 [00:25<00:17, 8.62it/s]
60%|###### | 224/371 [00:26<00:17, 8.64it/s]
61%|###### | 225/371 [00:26<00:16, 8.62it/s]
61%|###### | 226/371 [00:26<00:16, 8.62it/s]
61%|######1 | 227/371 [00:26<00:16, 8.62it/s]
61%|######1 | 228/371 [00:26<00:16, 8.62it/s]
62%|######1 | 229/371 [00:26<00:16, 8.62it/s]
62%|######1 | 230/371 [00:26<00:16, 8.62it/s]
62%|######2 | 231/371 [00:26<00:16, 8.62it/s]
63%|######2 | 232/371 [00:26<00:16, 8.62it/s]
63%|######2 | 233/371 [00:27<00:16, 8.53it/s]
63%|######3 | 234/371 [00:27<00:16, 8.56it/s]
63%|######3 | 235/371 [00:27<00:15, 8.58it/s]
64%|######3 | 236/371 [00:27<00:15, 8.59it/s]
64%|######3 | 237/371 [00:27<00:15, 8.60it/s]
64%|######4 | 238/371 [00:27<00:15, 8.61it/s]
64%|######4 | 239/371 [00:27<00:15, 8.61it/s]
65%|######4 | 240/371 [00:27<00:15, 8.61it/s]
65%|######4 | 241/371 [00:27<00:15, 8.62it/s]
65%|######5 | 242/371 [00:28<00:14, 8.62it/s]
65%|######5 | 243/371 [00:28<00:14, 8.62it/s]
66%|######5 | 244/371 [00:28<00:14, 8.62it/s]
66%|######6 | 245/371 [00:28<00:14, 8.62it/s]
66%|######6 | 246/371 [00:28<00:14, 8.62it/s]
67%|######6 | 247/371 [00:28<00:14, 8.62it/s]
67%|######6 | 248/371 [00:28<00:14, 8.62it/s]
67%|######7 | 249/371 [00:28<00:14, 8.62it/s]
67%|######7 | 250/371 [00:29<00:14, 8.62it/s]
68%|######7 | 251/371 [00:29<00:13, 8.62it/s]
68%|######7 | 252/371 [00:29<00:13, 8.62it/s]
68%|######8 | 253/371 [00:29<00:13, 8.62it/s]
68%|######8 | 254/371 [00:29<00:13, 8.62it/s]
69%|######8 | 255/371 [00:29<00:13, 8.62it/s]
69%|######9 | 256/371 [00:29<00:13, 8.62it/s]
69%|######9 | 257/371 [00:29<00:13, 8.62it/s]
70%|######9 | 258/371 [00:29<00:13, 8.62it/s]
70%|######9 | 259/371 [00:30<00:12, 8.62it/s]
70%|####### | 260/371 [00:30<00:12, 8.62it/s]
70%|####### | 261/371 [00:30<00:12, 8.62it/s]
71%|####### | 262/371 [00:30<00:12, 8.62it/s]
71%|####### | 263/371 [00:30<00:12, 8.62it/s]
71%|#######1 | 264/371 [00:30<00:12, 8.62it/s]
71%|#######1 | 265/371 [00:30<00:12, 8.62it/s]
72%|#######1 | 266/371 [00:30<00:12, 8.62it/s]
72%|#######1 | 267/371 [00:31<00:12, 8.62it/s]
72%|#######2 | 268/371 [00:31<00:11, 8.62it/s]
73%|#######2 | 269/371 [00:31<00:11, 8.66it/s]
73%|#######2 | 270/371 [00:31<00:11, 8.70it/s]
73%|#######3 | 271/371 [00:31<00:11, 8.67it/s]
73%|#######3 | 272/371 [00:31<00:11, 8.66it/s]
74%|#######3 | 273/371 [00:31<00:11, 8.65it/s]
74%|#######3 | 274/371 [00:31<00:11, 8.64it/s]
74%|#######4 | 275/371 [00:31<00:11, 8.63it/s]
74%|#######4 | 276/371 [00:32<00:11, 8.63it/s]
75%|#######4 | 277/371 [00:32<00:10, 8.63it/s]
75%|#######4 | 278/371 [00:32<00:10, 8.63it/s]
75%|#######5 | 279/371 [00:32<00:10, 8.62it/s]
75%|#######5 | 280/371 [00:32<00:10, 8.62it/s]
76%|#######5 | 281/371 [00:32<00:10, 8.62it/s]
76%|#######6 | 282/371 [00:32<00:10, 8.62it/s]
76%|#######6 | 283/371 [00:32<00:10, 8.62it/s]
77%|#######6 | 284/371 [00:32<00:10, 8.62it/s]
77%|#######6 | 285/371 [00:33<00:09, 8.62it/s]
77%|#######7 | 286/371 [00:33<00:09, 8.62it/s]
77%|#######7 | 287/371 [00:33<00:09, 8.62it/s]
78%|#######7 | 288/371 [00:33<00:09, 8.62it/s]
78%|#######7 | 289/371 [00:33<00:09, 8.62it/s]
78%|#######8 | 290/371 [00:33<00:09, 8.62it/s]
78%|#######8 | 291/371 [00:33<00:09, 8.62it/s]
79%|#######8 | 292/371 [00:33<00:09, 8.62it/s]
79%|#######8 | 293/371 [00:34<00:09, 8.62it/s]
79%|#######9 | 294/371 [00:34<00:08, 8.62it/s]
80%|#######9 | 295/371 [00:34<00:08, 8.62it/s]
80%|#######9 | 296/371 [00:34<00:08, 8.62it/s]
80%|######## | 297/371 [00:34<00:08, 8.62it/s]
80%|######## | 298/371 [00:34<00:08, 8.62it/s]
81%|######## | 299/371 [00:34<00:08, 8.62it/s]
81%|######## | 300/371 [00:34<00:08, 8.62it/s]
81%|########1 | 301/371 [00:34<00:08, 8.62it/s]
81%|########1 | 302/371 [00:35<00:08, 8.62it/s]
82%|########1 | 303/371 [00:35<00:07, 8.62it/s]
82%|########1 | 304/371 [00:35<00:07, 8.62it/s]
82%|########2 | 305/371 [00:35<00:07, 8.62it/s]
82%|########2 | 306/371 [00:35<00:07, 8.53it/s]
83%|########2 | 307/371 [00:35<00:07, 8.56it/s]
83%|########3 | 308/371 [00:35<00:07, 8.58it/s]
83%|########3 | 309/371 [00:35<00:07, 8.59it/s]
84%|########3 | 310/371 [00:36<00:07, 8.60it/s]
84%|########3 | 311/371 [00:36<00:06, 8.61it/s]
84%|########4 | 312/371 [00:36<00:06, 8.61it/s]
84%|########4 | 313/371 [00:36<00:06, 8.61it/s]
85%|########4 | 314/371 [00:36<00:06, 8.62it/s]
85%|########4 | 315/371 [00:36<00:06, 8.62it/s]
85%|########5 | 316/371 [00:36<00:06, 8.62it/s]
85%|########5 | 317/371 [00:36<00:06, 8.62it/s]
86%|########5 | 318/371 [00:36<00:06, 8.62it/s]
86%|########5 | 319/371 [00:37<00:06, 8.62it/s]
86%|########6 | 320/371 [00:37<00:05, 8.62it/s]
87%|########6 | 321/371 [00:37<00:05, 8.62it/s]
87%|########6 | 322/371 [00:37<00:05, 8.62it/s]
87%|########7 | 323/371 [00:37<00:05, 8.62it/s]
87%|########7 | 324/371 [00:37<00:05, 8.62it/s]
88%|########7 | 325/371 [00:37<00:05, 8.62it/s]
88%|########7 | 326/371 [00:37<00:05, 8.62it/s]
88%|########8 | 327/371 [00:37<00:05, 8.62it/s]
88%|########8 | 328/371 [00:38<00:04, 8.62it/s]
89%|########8 | 329/371 [00:38<00:04, 8.62it/s]
89%|########8 | 330/371 [00:38<00:04, 8.62it/s]
89%|########9 | 331/371 [00:38<00:04, 8.62it/s]
89%|########9 | 332/371 [00:38<00:04, 8.62it/s]
90%|########9 | 333/371 [00:38<00:04, 8.62it/s]
90%|######### | 334/371 [00:38<00:04, 8.62it/s]
90%|######### | 335/371 [00:38<00:04, 8.62it/s]
91%|######### | 336/371 [00:39<00:04, 8.62it/s]
91%|######### | 337/371 [00:39<00:03, 8.62it/s]
91%|#########1| 338/371 [00:39<00:03, 8.62it/s]
91%|#########1| 339/371 [00:39<00:03, 8.62it/s]
92%|#########1| 340/371 [00:39<00:03, 8.63it/s]
92%|#########1| 341/371 [00:39<00:03, 8.53it/s]
92%|#########2| 342/371 [00:39<00:03, 8.56it/s]
92%|#########2| 343/371 [00:39<00:03, 7.89it/s]
93%|#########2| 344/371 [00:39<00:03, 8.13it/s]
93%|#########2| 345/371 [00:40<00:03, 8.27it/s]
93%|#########3| 346/371 [00:40<00:02, 8.37it/s]
94%|#########3| 347/371 [00:40<00:02, 8.45it/s]
94%|#########3| 348/371 [00:40<00:02, 8.50it/s]
94%|#########4| 349/371 [00:40<00:02, 8.53it/s]
94%|#########4| 350/371 [00:40<00:02, 8.56it/s]
95%|#########4| 351/371 [00:40<00:02, 8.58it/s]
95%|#########4| 352/371 [00:40<00:02, 8.59it/s]
95%|#########5| 353/371 [00:41<00:02, 8.60it/s]
95%|#########5| 354/371 [00:41<00:01, 8.61it/s]
96%|#########5| 355/371 [00:41<00:01, 8.61it/s]
96%|#########5| 356/371 [00:41<00:01, 8.61it/s]
96%|#########6| 357/371 [00:41<00:01, 8.62it/s]
96%|#########6| 358/371 [00:41<00:01, 8.62it/s]
97%|#########6| 359/371 [00:41<00:01, 8.62it/s]
97%|#########7| 360/371 [00:41<00:01, 7.86it/s]
97%|#########7| 361/371 [00:42<00:01, 7.53it/s]
98%|#########7| 362/371 [00:42<00:01, 7.74it/s]
98%|#########7| 363/371 [00:42<00:01, 7.99it/s]
98%|#########8| 364/371 [00:42<00:00, 8.17it/s]
98%|#########8| 365/371 [00:42<00:00, 8.30it/s]
99%|#########8| 366/371 [00:42<00:00, 8.39it/s]
99%|#########8| 367/371 [00:42<00:00, 8.46it/s]
99%|#########9| 368/371 [00:42<00:00, 8.51it/s]
99%|#########9| 369/371 [00:42<00:00, 8.54it/s]
100%|#########9| 370/371 [00:43<00:00, 8.56it/s]
100%|##########| 371/371 [00:43<00:00, 8.58it/s]
100%|##########| 371/371 [00:43<00:00, 8.59it/s]
<shap.explainers._kernel.Kernel object at 0x7fa22c5b34f0>
explainer.plot_shap_values()

#explainer.beeswarm_plot()
explainer.summary_plot(plot_type="bar")

explainer.summary_plot(plot_type="dot")

explainer.summary_plot(plot_type="violin")

#explainer.heatmap()
#explainer.waterfall_plot_single_example(27)
explainer.dependence_plot_all_features()

#explainer.scatter_plot_all_features()
Total running time of the script: ( 1 minutes 39.573 seconds)