Note
Go to the end to download the full example code or to run this example in your browser via Binder
aac shap
model building
import numpy as np
import pandas as pd
from ai4water import Model
import matplotlib.pyplot as plt
from aac_utils import aac_data, get_fitted_model
x, y, input_features, output_features = aac_data()
np.set_printoptions(suppress=True, linewidth=200)
********** Removing Examples with nan in labels **********
***** Training *****
input_x shape: (374, 6)
target shape: (374, 1)
model = Model(
model= {
"XGBRegressor": {
"n_estimators": 5,
"learning_rate": 0.0001,
"booster": "gblinear",
"random_state": 313
}
},
x_transformation= [
{
"method": "pareto",
"features": [
"wat_temp_c"
]
},
{
"method": "quantile_normal",
"features": [
"sal_psu"
],
"n_quantiles": 40
},
{
"method": "quantile",
"features": [
"pcp_mm"
],
"n_quantiles": 40
},
{
"method": "sqrt",
"features": [
"wind_speed_mps"
],
"treat_negatives": True
},
{
"method": "pareto",
"features": [
"air_p_hpa"
]
}
],
y_transformation= [
{
"method": "zscore",
"features": [
"aac_coppml"
]
}
],
seed=313,
split_random = False,
cross_validator= {"TimeSeriesSplit": {"n_splits": 10}},
verbosity=0,
input_features=[
"wat_temp_c",
"tide_cm",
"sal_psu",
"pcp_mm",
"wind_speed_mps",
"air_p_hpa"
],
output_features=[
"aac_coppml"
],
)
model.fit(x, y)
XGBRegressor(base_score=None, booster='gblinear', callbacks=None,
colsample_bylevel=None, colsample_bynode=None,
colsample_bytree=None, early_stopping_rounds=None,
enable_categorical=False, eval_metric=None, feature_types=None,
gamma=None, gpu_id=None, grow_policy=None, importance_type=None,
interaction_constraints=None, learning_rate=0.0001, max_bin=None,
max_cat_threshold=None, max_cat_to_onehot=None,
max_delta_step=None, max_depth=None, max_leaves=None,
min_child_weight=None, missing=nan, monotone_constraints=None,
n_estimators=5, n_jobs=None, num_parallel_tree=None,
predictor=None, random_state=313, ...)
from ai4water.postprocessing.explain import ShapExplainer
import shap
print(shap.__version__)
0.40.0
class MyShapExpaliner(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
explainer = MyShapExpaliner(model=model,
data=x,
train_data=x,
feature_names=model.input_features,
#save=False
)
print(explainer.explainer)
0%| | 0/370 [00:00<?, ?it/s]
1%| | 2/370 [00:00<00:30, 11.96it/s]
1%|1 | 4/370 [00:00<00:34, 10.60it/s]
2%|1 | 6/370 [00:00<00:35, 10.31it/s]
2%|2 | 8/370 [00:00<00:35, 10.19it/s]
3%|2 | 10/370 [00:00<00:35, 10.12it/s]
3%|3 | 12/370 [00:01<00:35, 10.08it/s]
4%|3 | 14/370 [00:01<00:36, 9.86it/s]
4%|4 | 15/370 [00:01<00:36, 9.81it/s]
4%|4 | 16/370 [00:01<00:36, 9.77it/s]
5%|4 | 17/370 [00:01<00:36, 9.73it/s]
5%|4 | 18/370 [00:01<00:36, 9.70it/s]
5%|5 | 19/370 [00:01<00:36, 9.75it/s]
5%|5 | 20/370 [00:02<00:35, 9.74it/s]
6%|5 | 21/370 [00:02<00:35, 9.71it/s]
6%|5 | 22/370 [00:02<00:35, 9.68it/s]
6%|6 | 23/370 [00:02<00:35, 9.66it/s]
6%|6 | 24/370 [00:02<00:35, 9.65it/s]
7%|6 | 25/370 [00:02<00:35, 9.62it/s]
7%|7 | 27/370 [00:02<00:34, 9.81it/s]
8%|7 | 28/370 [00:02<00:35, 9.76it/s]
8%|7 | 29/370 [00:02<00:35, 9.72it/s]
8%|8 | 30/370 [00:03<00:35, 9.69it/s]
8%|8 | 31/370 [00:03<00:35, 9.67it/s]
9%|8 | 32/370 [00:03<00:35, 9.66it/s]
9%|8 | 33/370 [00:03<00:34, 9.65it/s]
9%|9 | 34/370 [00:03<00:34, 9.63it/s]
9%|9 | 35/370 [00:03<00:34, 9.63it/s]
10%|# | 37/370 [00:03<00:33, 9.80it/s]
11%|# | 39/370 [00:03<00:33, 9.88it/s]
11%|#1 | 41/370 [00:04<00:33, 9.85it/s]
11%|#1 | 42/370 [00:04<00:33, 9.80it/s]
12%|#1 | 44/370 [00:04<00:33, 9.80it/s]
12%|#2 | 45/370 [00:04<00:33, 9.76it/s]
12%|#2 | 46/370 [00:04<00:33, 9.73it/s]
13%|#2 | 47/370 [00:04<00:33, 9.61it/s]
13%|#2 | 48/370 [00:04<00:33, 9.61it/s]
14%|#3 | 50/370 [00:05<00:33, 9.69it/s]
14%|#3 | 51/370 [00:05<00:32, 9.69it/s]
14%|#4 | 52/370 [00:05<00:32, 9.75it/s]
15%|#4 | 54/370 [00:05<00:32, 9.85it/s]
15%|#5 | 56/370 [00:05<00:31, 9.91it/s]
16%|#5 | 58/370 [00:05<00:31, 9.87it/s]
16%|#5 | 59/370 [00:06<00:31, 9.82it/s]
16%|#6 | 60/370 [00:06<00:31, 9.77it/s]
16%|#6 | 61/370 [00:06<00:31, 9.74it/s]
17%|#6 | 62/370 [00:06<00:31, 9.70it/s]
17%|#7 | 63/370 [00:06<00:31, 9.68it/s]
17%|#7 | 64/370 [00:06<00:31, 9.66it/s]
18%|#7 | 65/370 [00:06<00:31, 9.65it/s]
18%|#7 | 66/370 [00:06<00:31, 9.64it/s]
18%|#8 | 67/370 [00:06<00:31, 9.63it/s]
18%|#8 | 68/370 [00:06<00:31, 9.63it/s]
19%|#8 | 69/370 [00:07<00:31, 9.62it/s]
19%|#8 | 70/370 [00:07<00:31, 9.62it/s]
19%|#9 | 71/370 [00:07<00:30, 9.70it/s]
19%|#9 | 72/370 [00:07<00:30, 9.71it/s]
20%|#9 | 73/370 [00:07<00:30, 9.68it/s]
20%|## | 74/370 [00:07<00:30, 9.66it/s]
20%|## | 75/370 [00:07<00:30, 9.65it/s]
21%|## | 76/370 [00:07<00:30, 9.64it/s]
21%|##1 | 78/370 [00:07<00:30, 9.71it/s]
21%|##1 | 79/370 [00:08<00:30, 9.69it/s]
22%|##1 | 81/370 [00:08<00:29, 9.82it/s]
22%|##2 | 83/370 [00:08<00:29, 9.88it/s]
23%|##2 | 85/370 [00:08<00:28, 9.86it/s]
23%|##3 | 86/370 [00:08<00:29, 9.73it/s]
24%|##3 | 87/370 [00:08<00:29, 9.71it/s]
24%|##4 | 89/370 [00:09<00:28, 9.82it/s]
25%|##4 | 91/370 [00:09<00:28, 9.88it/s]
25%|##5 | 93/370 [00:09<00:27, 9.92it/s]
26%|##5 | 95/370 [00:09<00:27, 9.95it/s]
26%|##6 | 97/370 [00:09<00:27, 9.96it/s]
26%|##6 | 98/370 [00:09<00:27, 9.90it/s]
27%|##6 | 99/370 [00:10<00:27, 9.84it/s]
27%|##7 | 100/370 [00:10<00:27, 9.78it/s]
27%|##7 | 101/370 [00:10<00:27, 9.74it/s]
28%|##7 | 102/370 [00:10<00:27, 9.71it/s]
28%|##7 | 103/370 [00:10<00:27, 9.68it/s]
28%|##8 | 104/370 [00:10<00:27, 9.66it/s]
28%|##8 | 105/370 [00:10<00:27, 9.65it/s]
29%|##8 | 106/370 [00:10<00:27, 9.64it/s]
29%|##8 | 107/370 [00:10<00:27, 9.63it/s]
29%|##9 | 108/370 [00:11<00:27, 9.63it/s]
29%|##9 | 109/370 [00:11<00:27, 9.52it/s]
30%|##9 | 110/370 [00:11<00:27, 9.55it/s]
30%|### | 111/370 [00:11<00:26, 9.62it/s]
30%|### | 112/370 [00:11<00:26, 9.67it/s]
31%|### | 114/370 [00:11<00:26, 9.82it/s]
31%|###1 | 116/370 [00:11<00:25, 9.85it/s]
32%|###1 | 117/370 [00:11<00:25, 9.84it/s]
32%|###2 | 119/370 [00:12<00:25, 9.83it/s]
32%|###2 | 120/370 [00:12<00:25, 9.78it/s]
33%|###2 | 122/370 [00:12<00:25, 9.79it/s]
33%|###3 | 123/370 [00:12<00:25, 9.75it/s]
34%|###3 | 124/370 [00:12<00:25, 9.78it/s]
34%|###4 | 126/370 [00:12<00:24, 9.89it/s]
34%|###4 | 127/370 [00:12<00:24, 9.83it/s]
35%|###4 | 128/370 [00:13<00:24, 9.78it/s]
35%|###4 | 129/370 [00:13<00:27, 8.81it/s]
35%|###5 | 130/370 [00:13<00:26, 9.06it/s]
35%|###5 | 131/370 [00:13<00:25, 9.21it/s]
36%|###5 | 132/370 [00:13<00:25, 9.28it/s]
36%|###5 | 133/370 [00:13<00:25, 9.28it/s]
36%|###6 | 134/370 [00:13<00:25, 9.41it/s]
36%|###6 | 135/370 [00:13<00:25, 9.36it/s]
37%|###6 | 136/370 [00:13<00:24, 9.44it/s]
37%|###7 | 138/370 [00:14<00:23, 9.69it/s]
38%|###7 | 140/370 [00:14<00:23, 9.83it/s]
38%|###8 | 141/370 [00:14<00:23, 9.84it/s]
39%|###8 | 143/370 [00:14<00:22, 9.90it/s]
39%|###8 | 144/370 [00:14<00:22, 9.84it/s]
39%|###9 | 145/370 [00:14<00:22, 9.79it/s]
39%|###9 | 146/370 [00:14<00:22, 9.74it/s]
40%|###9 | 147/370 [00:15<00:22, 9.71it/s]
40%|#### | 148/370 [00:15<00:22, 9.73it/s]
40%|#### | 149/370 [00:15<00:22, 9.76it/s]
41%|#### | 151/370 [00:15<00:22, 9.86it/s]
41%|####1 | 153/370 [00:15<00:21, 9.92it/s]
42%|####1 | 155/370 [00:15<00:21, 9.93it/s]
42%|####2 | 156/370 [00:15<00:21, 9.88it/s]
42%|####2 | 157/370 [00:16<00:21, 9.82it/s]
43%|####2 | 158/370 [00:16<00:21, 9.77it/s]
43%|####2 | 159/370 [00:16<00:21, 9.73it/s]
43%|####3 | 160/370 [00:16<00:22, 9.50it/s]
44%|####3 | 161/370 [00:16<00:21, 9.53it/s]
44%|####3 | 162/370 [00:16<00:21, 9.56it/s]
44%|####4 | 163/370 [00:16<00:21, 9.57it/s]
44%|####4 | 164/370 [00:16<00:21, 9.59it/s]
45%|####4 | 165/370 [00:16<00:21, 9.49it/s]
45%|####4 | 166/370 [00:17<00:21, 9.52it/s]
45%|####5 | 167/370 [00:17<00:21, 9.54it/s]
45%|####5 | 168/370 [00:17<00:21, 9.54it/s]
46%|####5 | 169/370 [00:17<00:20, 9.60it/s]
46%|####5 | 170/370 [00:17<00:20, 9.60it/s]
46%|####6 | 172/370 [00:17<00:20, 9.78it/s]
47%|####6 | 173/370 [00:17<00:20, 9.74it/s]
47%|####7 | 174/370 [00:17<00:20, 9.69it/s]
47%|####7 | 175/370 [00:17<00:20, 9.69it/s]
48%|####7 | 176/370 [00:18<00:20, 9.67it/s]
48%|####7 | 177/370 [00:18<00:20, 9.65it/s]
48%|####8 | 179/370 [00:18<00:19, 9.81it/s]
49%|####8 | 180/370 [00:18<00:19, 9.76it/s]
49%|####8 | 181/370 [00:18<00:19, 9.72it/s]
49%|####9 | 182/370 [00:18<00:19, 9.70it/s]
49%|####9 | 183/370 [00:18<00:19, 9.67it/s]
50%|####9 | 184/370 [00:18<00:19, 9.65it/s]
50%|##### | 185/370 [00:19<00:19, 9.28it/s]
50%|##### | 186/370 [00:19<00:21, 8.44it/s]
51%|##### | 187/370 [00:19<00:20, 8.81it/s]
51%|##### | 188/370 [00:19<00:20, 9.04it/s]
51%|#####1 | 189/370 [00:19<00:19, 9.29it/s]
52%|#####1 | 191/370 [00:19<00:18, 9.61it/s]
52%|#####2 | 193/370 [00:19<00:18, 9.76it/s]
52%|#####2 | 194/370 [00:19<00:18, 9.73it/s]
53%|#####2 | 195/370 [00:20<00:18, 9.70it/s]
53%|#####2 | 196/370 [00:20<00:17, 9.68it/s]
53%|#####3 | 197/370 [00:20<00:17, 9.66it/s]
54%|#####3 | 198/370 [00:20<00:17, 9.65it/s]
54%|#####3 | 199/370 [00:20<00:17, 9.64it/s]
54%|#####4 | 200/370 [00:20<00:17, 9.63it/s]
54%|#####4 | 201/370 [00:20<00:17, 9.63it/s]
55%|#####4 | 202/370 [00:20<00:17, 9.62it/s]
55%|#####4 | 203/370 [00:20<00:17, 9.62it/s]
55%|#####5 | 204/370 [00:21<00:17, 9.62it/s]
55%|#####5 | 205/370 [00:21<00:17, 9.62it/s]
56%|#####5 | 206/370 [00:21<00:17, 9.60it/s]
56%|#####5 | 207/370 [00:21<00:17, 9.33it/s]
56%|#####6 | 208/370 [00:21<00:17, 9.39it/s]
56%|#####6 | 209/370 [00:21<00:17, 9.45it/s]
57%|#####6 | 210/370 [00:21<00:16, 9.50it/s]
57%|#####7 | 211/370 [00:21<00:16, 9.54it/s]
57%|#####7 | 212/370 [00:21<00:16, 9.45it/s]
58%|#####7 | 213/370 [00:21<00:16, 9.39it/s]
58%|#####7 | 214/370 [00:22<00:16, 9.46it/s]
58%|#####8 | 215/370 [00:22<00:16, 9.24it/s]
58%|#####8 | 216/370 [00:22<00:16, 9.40it/s]
59%|#####8 | 218/370 [00:22<00:15, 9.67it/s]
59%|#####9 | 220/370 [00:22<00:15, 9.80it/s]
60%|#####9 | 221/370 [00:22<00:15, 9.76it/s]
60%|###### | 222/370 [00:22<00:15, 9.81it/s]
60%|###### | 223/370 [00:22<00:15, 9.76it/s]
61%|###### | 225/370 [00:23<00:14, 9.78it/s]
61%|######1 | 226/370 [00:23<00:14, 9.74it/s]
61%|######1 | 227/370 [00:23<00:14, 9.71it/s]
62%|######1 | 228/370 [00:23<00:14, 9.78it/s]
62%|######1 | 229/370 [00:23<00:14, 9.84it/s]
62%|######2 | 230/370 [00:23<00:14, 9.78it/s]
63%|######2 | 232/370 [00:23<00:14, 9.78it/s]
63%|######2 | 233/370 [00:24<00:14, 9.75it/s]
64%|######3 | 235/370 [00:24<00:13, 9.85it/s]
64%|######4 | 237/370 [00:24<00:13, 9.90it/s]
65%|######4 | 239/370 [00:24<00:13, 9.94it/s]
65%|######4 | 240/370 [00:24<00:13, 9.87it/s]
65%|######5 | 241/370 [00:24<00:13, 9.81it/s]
66%|######5 | 243/370 [00:25<00:12, 9.89it/s]
66%|######5 | 244/370 [00:25<00:12, 9.91it/s]
66%|######6 | 245/370 [00:25<00:12, 9.84it/s]
66%|######6 | 246/370 [00:25<00:12, 9.69it/s]
67%|######6 | 247/370 [00:25<00:12, 9.67it/s]
67%|######7 | 249/370 [00:25<00:12, 9.81it/s]
68%|######7 | 250/370 [00:25<00:12, 9.76it/s]
68%|######8 | 252/370 [00:25<00:12, 9.78it/s]
69%|######8 | 254/370 [00:26<00:11, 9.79it/s]
69%|######8 | 255/370 [00:26<00:11, 9.75it/s]
69%|######9 | 256/370 [00:26<00:11, 9.72it/s]
69%|######9 | 257/370 [00:26<00:11, 9.69it/s]
70%|######9 | 258/370 [00:26<00:11, 9.67it/s]
70%|####### | 259/370 [00:26<00:11, 9.66it/s]
70%|####### | 260/370 [00:26<00:11, 9.65it/s]
71%|####### | 261/370 [00:26<00:11, 9.64it/s]
71%|####### | 262/370 [00:26<00:11, 9.63it/s]
71%|#######1 | 263/370 [00:27<00:10, 9.74it/s]
71%|#######1 | 264/370 [00:27<00:10, 9.70it/s]
72%|#######1 | 265/370 [00:27<00:10, 9.67it/s]
72%|#######1 | 266/370 [00:27<00:10, 9.55it/s]
72%|#######2 | 267/370 [00:27<00:10, 9.57it/s]
72%|#######2 | 268/370 [00:27<00:10, 9.58it/s]
73%|#######2 | 269/370 [00:27<00:10, 9.59it/s]
73%|#######2 | 270/370 [00:27<00:10, 9.60it/s]
73%|#######3 | 271/370 [00:27<00:10, 9.60it/s]
74%|#######3 | 272/370 [00:28<00:10, 9.61it/s]
74%|#######3 | 273/370 [00:28<00:10, 9.60it/s]
74%|#######4 | 275/370 [00:28<00:09, 9.79it/s]
75%|#######4 | 277/370 [00:28<00:09, 9.87it/s]
75%|#######5 | 279/370 [00:28<00:09, 9.85it/s]
76%|#######5 | 280/370 [00:28<00:09, 9.80it/s]
76%|#######5 | 281/370 [00:28<00:09, 9.84it/s]
76%|#######6 | 282/370 [00:29<00:08, 9.79it/s]
76%|#######6 | 283/370 [00:29<00:08, 9.74it/s]
77%|#######6 | 284/370 [00:29<00:08, 9.61it/s]
77%|#######7 | 285/370 [00:29<00:08, 9.51it/s]
77%|#######7 | 286/370 [00:29<00:08, 9.54it/s]
78%|#######7 | 288/370 [00:29<00:08, 9.66it/s]
78%|#######8 | 289/370 [00:29<00:08, 9.65it/s]
78%|#######8 | 290/370 [00:29<00:08, 9.64it/s]
79%|#######8 | 291/370 [00:29<00:08, 9.63it/s]
79%|#######9 | 293/370 [00:30<00:07, 9.79it/s]
80%|#######9 | 295/370 [00:30<00:07, 9.87it/s]
80%|######## | 296/370 [00:30<00:07, 9.81it/s]
80%|######## | 297/370 [00:30<00:07, 9.77it/s]
81%|######## | 299/370 [00:30<00:07, 9.78it/s]
81%|########1 | 301/370 [00:30<00:06, 9.86it/s]
82%|########1 | 303/370 [00:31<00:06, 9.84it/s]
82%|########2 | 304/370 [00:31<00:06, 9.80it/s]
82%|########2 | 305/370 [00:31<00:06, 9.76it/s]
83%|########2 | 306/370 [00:31<00:06, 9.81it/s]
83%|########2 | 307/370 [00:31<00:06, 9.86it/s]
83%|########3 | 308/370 [00:31<00:06, 9.79it/s]
84%|########3 | 309/370 [00:31<00:06, 9.74it/s]
84%|########3 | 310/370 [00:31<00:06, 9.60it/s]
84%|########4 | 311/370 [00:32<00:06, 9.61it/s]
84%|########4 | 312/370 [00:32<00:06, 9.61it/s]
85%|########4 | 313/370 [00:32<00:05, 9.61it/s]
85%|########4 | 314/370 [00:32<00:05, 9.61it/s]
85%|########5 | 315/370 [00:32<00:05, 9.61it/s]
85%|########5 | 316/370 [00:32<00:05, 9.61it/s]
86%|########5 | 317/370 [00:32<00:05, 9.61it/s]
86%|########5 | 318/370 [00:32<00:05, 9.51it/s]
86%|########6 | 319/370 [00:32<00:05, 9.43it/s]
86%|########6 | 320/370 [00:32<00:05, 9.48it/s]
87%|########7 | 322/370 [00:33<00:04, 9.63it/s]
87%|########7 | 323/370 [00:33<00:04, 9.54it/s]
88%|########7 | 324/370 [00:33<00:04, 9.46it/s]
88%|########7 | 325/370 [00:33<00:04, 9.50it/s]
88%|########8 | 326/370 [00:33<00:04, 9.53it/s]
88%|########8 | 327/370 [00:33<00:04, 9.56it/s]
89%|########8 | 329/370 [00:33<00:04, 9.75it/s]
89%|########9 | 330/370 [00:33<00:04, 9.72it/s]
89%|########9 | 331/370 [00:34<00:04, 9.69it/s]
90%|########9 | 332/370 [00:34<00:04, 9.47it/s]
90%|######### | 333/370 [00:34<00:03, 9.51it/s]
90%|######### | 334/370 [00:34<00:03, 9.54it/s]
91%|######### | 335/370 [00:34<00:03, 9.56it/s]
91%|######### | 336/370 [00:34<00:03, 9.58it/s]
91%|#########1| 337/370 [00:34<00:03, 9.59it/s]
91%|#########1| 338/370 [00:34<00:03, 9.60it/s]
92%|#########1| 340/370 [00:35<00:03, 9.78it/s]
92%|#########2| 341/370 [00:35<00:02, 9.83it/s]
92%|#########2| 342/370 [00:35<00:02, 9.77it/s]
93%|#########2| 343/370 [00:35<00:02, 9.63it/s]
93%|#########2| 344/370 [00:35<00:02, 9.63it/s]
94%|#########3| 346/370 [00:35<00:02, 9.79it/s]
94%|#########4| 348/370 [00:35<00:02, 9.87it/s]
94%|#########4| 349/370 [00:35<00:02, 9.81it/s]
95%|#########4| 351/370 [00:36<00:01, 9.81it/s]
95%|#########5| 352/370 [00:36<00:01, 9.70it/s]
95%|#########5| 353/370 [00:36<00:01, 9.67it/s]
96%|#########5| 354/370 [00:36<00:01, 9.65it/s]
96%|#########5| 355/370 [00:36<00:01, 9.64it/s]
96%|#########6| 356/370 [00:36<00:01, 9.64it/s]
96%|#########6| 357/370 [00:36<00:01, 9.53it/s]
97%|#########6| 358/370 [00:36<00:01, 9.55it/s]
97%|#########7| 359/370 [00:37<00:01, 9.57it/s]
98%|#########7| 361/370 [00:37<00:00, 9.68it/s]
98%|#########7| 362/370 [00:37<00:00, 9.57it/s]
98%|#########8| 363/370 [00:37<00:00, 9.49it/s]
98%|#########8| 364/370 [00:37<00:00, 9.52it/s]
99%|#########8| 365/370 [00:37<00:00, 9.55it/s]
99%|#########8| 366/370 [00:37<00:00, 9.57it/s]
99%|#########9| 368/370 [00:37<00:00, 9.76it/s]
100%|#########9| 369/370 [00:38<00:00, 9.81it/s]
100%|##########| 370/370 [00:38<00:00, 9.70it/s]
<shap.explainers._kernel.Kernel object at 0x7fa22a455b50>
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 = MyShapExpaliner(model=model,
data=x,
train_data=x,
feature_names=model.input_features,
explainer="KernelExplainer",
# save=False
)
print(explainer.explainer)
0%| | 0/370 [00:00<?, ?it/s]
1%| | 2/370 [00:00<00:33, 11.03it/s]
1%|1 | 4/370 [00:00<00:35, 10.35it/s]
2%|1 | 6/370 [00:00<00:35, 10.19it/s]
2%|2 | 8/370 [00:00<00:35, 10.11it/s]
3%|2 | 10/370 [00:00<00:35, 10.07it/s]
3%|3 | 12/370 [00:01<00:35, 10.05it/s]
4%|3 | 14/370 [00:01<00:35, 10.03it/s]
4%|4 | 16/370 [00:01<00:35, 10.02it/s]
5%|4 | 18/370 [00:01<00:35, 9.95it/s]
5%|5 | 20/370 [00:01<00:35, 9.97it/s]
6%|5 | 22/370 [00:02<00:34, 9.98it/s]
6%|6 | 23/370 [00:02<00:34, 9.98it/s]
7%|6 | 25/370 [00:02<00:34, 9.99it/s]
7%|7 | 27/370 [00:02<00:34, 9.99it/s]
8%|7 | 29/370 [00:02<00:34, 9.99it/s]
8%|8 | 31/370 [00:03<00:33, 10.00it/s]
9%|8 | 33/370 [00:03<00:33, 10.00it/s]
9%|9 | 35/370 [00:03<00:33, 10.00it/s]
10%|9 | 36/370 [00:03<00:33, 9.85it/s]
10%|# | 37/370 [00:03<00:33, 9.81it/s]
10%|# | 38/370 [00:03<00:33, 9.85it/s]
11%|# | 39/370 [00:03<00:33, 9.79it/s]
11%|# | 40/370 [00:04<00:33, 9.75it/s]
11%|#1 | 41/370 [00:04<00:33, 9.71it/s]
11%|#1 | 42/370 [00:04<00:33, 9.68it/s]
12%|#1 | 44/370 [00:04<00:33, 9.82it/s]
12%|#2 | 45/370 [00:04<00:32, 9.86it/s]
13%|#2 | 47/370 [00:04<00:32, 9.92it/s]
13%|#3 | 49/370 [00:04<00:32, 9.95it/s]
14%|#3 | 50/370 [00:05<00:32, 9.96it/s]
14%|#4 | 52/370 [00:05<00:31, 9.98it/s]
15%|#4 | 54/370 [00:05<00:31, 9.98it/s]
15%|#4 | 55/370 [00:05<00:31, 9.99it/s]
15%|#5 | 57/370 [00:05<00:31, 9.99it/s]
16%|#5 | 59/370 [00:05<00:31, 9.99it/s]
16%|#6 | 60/370 [00:06<00:31, 10.00it/s]
17%|#6 | 62/370 [00:06<00:30, 10.00it/s]
17%|#7 | 64/370 [00:06<00:30, 10.00it/s]
18%|#7 | 66/370 [00:06<00:30, 9.93it/s]
18%|#8 | 68/370 [00:06<00:30, 9.95it/s]
19%|#8 | 69/370 [00:06<00:30, 9.89it/s]
19%|#8 | 70/370 [00:07<00:30, 9.83it/s]
19%|#9 | 71/370 [00:07<00:30, 9.78it/s]
19%|#9 | 72/370 [00:07<00:30, 9.74it/s]
20%|#9 | 73/370 [00:07<00:30, 9.75it/s]
20%|## | 74/370 [00:07<00:30, 9.77it/s]
21%|## | 76/370 [00:07<00:30, 9.79it/s]
21%|## | 77/370 [00:07<00:30, 9.75it/s]
21%|##1 | 79/370 [00:07<00:29, 9.85it/s]
22%|##1 | 80/370 [00:08<00:29, 9.88it/s]
22%|##1 | 81/370 [00:08<00:29, 9.82it/s]
22%|##2 | 82/370 [00:08<00:29, 9.67it/s]
22%|##2 | 83/370 [00:08<00:29, 9.65it/s]
23%|##2 | 84/370 [00:08<00:32, 8.88it/s]
23%|##2 | 85/370 [00:08<00:32, 8.90it/s]
23%|##3 | 86/370 [00:08<00:31, 9.09it/s]
24%|##3 | 87/370 [00:08<00:30, 9.24it/s]
24%|##3 | 88/370 [00:08<00:30, 9.35it/s]
24%|##4 | 90/370 [00:09<00:29, 9.63it/s]
25%|##4 | 92/370 [00:09<00:28, 9.78it/s]
25%|##5 | 93/370 [00:09<00:28, 9.82it/s]
26%|##5 | 95/370 [00:09<00:28, 9.82it/s]
26%|##5 | 96/370 [00:09<00:28, 9.77it/s]
26%|##6 | 97/370 [00:09<00:27, 9.82it/s]
27%|##6 | 99/370 [00:10<00:27, 9.90it/s]
27%|##7 | 100/370 [00:10<00:27, 9.83it/s]
27%|##7 | 101/370 [00:10<00:27, 9.78it/s]
28%|##7 | 102/370 [00:10<00:27, 9.74it/s]
28%|##8 | 104/370 [00:10<00:29, 8.92it/s]
28%|##8 | 105/370 [00:10<00:31, 8.33it/s]
29%|##8 | 106/370 [00:10<00:30, 8.55it/s]
29%|##9 | 108/370 [00:11<00:28, 9.10it/s]
30%|##9 | 110/370 [00:11<00:27, 9.41it/s]
30%|### | 112/370 [00:11<00:27, 9.55it/s]
31%|### | 113/370 [00:11<00:26, 9.56it/s]
31%|###1 | 115/370 [00:11<00:26, 9.71it/s]
31%|###1 | 116/370 [00:11<00:26, 9.69it/s]
32%|###1 | 117/370 [00:11<00:26, 9.68it/s]
32%|###1 | 118/370 [00:12<00:26, 9.69it/s]
32%|###2 | 119/370 [00:12<00:26, 9.64it/s]
33%|###2 | 121/370 [00:12<00:25, 9.79it/s]
33%|###3 | 123/370 [00:12<00:25, 9.87it/s]
34%|###3 | 124/370 [00:12<00:25, 9.81it/s]
34%|###3 | 125/370 [00:12<00:25, 9.77it/s]
34%|###4 | 126/370 [00:12<00:25, 9.73it/s]
34%|###4 | 127/370 [00:12<00:25, 9.70it/s]
35%|###4 | 129/370 [00:13<00:24, 9.74it/s]
35%|###5 | 130/370 [00:13<00:24, 9.71it/s]
36%|###5 | 132/370 [00:13<00:24, 9.75it/s]
36%|###5 | 133/370 [00:13<00:24, 9.75it/s]
36%|###6 | 134/370 [00:13<00:24, 9.77it/s]
37%|###6 | 136/370 [00:13<00:23, 9.87it/s]
37%|###7 | 138/370 [00:14<00:23, 9.91it/s]
38%|###7 | 139/370 [00:14<00:23, 9.85it/s]
38%|###8 | 141/370 [00:14<00:23, 9.91it/s]
38%|###8 | 142/370 [00:14<00:25, 9.05it/s]
39%|###8 | 143/370 [00:14<00:24, 9.22it/s]
39%|###9 | 145/370 [00:14<00:23, 9.52it/s]
40%|###9 | 147/370 [00:15<00:23, 9.69it/s]
40%|#### | 149/370 [00:15<00:22, 9.79it/s]
41%|#### | 151/370 [00:15<00:22, 9.86it/s]
41%|####1 | 153/370 [00:15<00:21, 9.90it/s]
42%|####1 | 155/370 [00:15<00:21, 9.87it/s]
42%|####2 | 156/370 [00:15<00:21, 9.88it/s]
42%|####2 | 157/370 [00:16<00:21, 9.84it/s]
43%|####2 | 158/370 [00:16<00:21, 9.82it/s]
43%|####2 | 159/370 [00:16<00:21, 9.83it/s]
43%|####3 | 160/370 [00:16<00:21, 9.77it/s]
44%|####3 | 161/370 [00:16<00:21, 9.73it/s]
44%|####3 | 162/370 [00:16<00:21, 9.70it/s]
44%|####4 | 163/370 [00:16<00:21, 9.68it/s]
44%|####4 | 164/370 [00:16<00:21, 9.66it/s]
45%|####4 | 165/370 [00:16<00:21, 9.65it/s]
45%|####4 | 166/370 [00:16<00:21, 9.64it/s]
45%|####5 | 167/370 [00:17<00:21, 9.63it/s]
45%|####5 | 168/370 [00:17<00:20, 9.63it/s]
46%|####5 | 169/370 [00:17<00:20, 9.62it/s]
46%|####5 | 170/370 [00:17<00:20, 9.62it/s]
46%|####6 | 171/370 [00:17<00:20, 9.62it/s]
46%|####6 | 172/370 [00:17<00:20, 9.62it/s]
47%|####7 | 174/370 [00:17<00:20, 9.79it/s]
48%|####7 | 176/370 [00:18<00:19, 9.87it/s]
48%|####8 | 178/370 [00:18<00:19, 9.92it/s]
49%|####8 | 180/370 [00:18<00:19, 9.92it/s]
49%|####8 | 181/370 [00:18<00:19, 9.89it/s]
49%|####9 | 182/370 [00:18<00:19, 9.83it/s]
50%|####9 | 184/370 [00:18<00:18, 9.89it/s]
50%|##### | 185/370 [00:18<00:18, 9.83it/s]
50%|##### | 186/370 [00:19<00:18, 9.78it/s]
51%|##### | 187/370 [00:19<00:18, 9.74it/s]
51%|##### | 188/370 [00:19<00:18, 9.81it/s]
51%|#####1 | 190/370 [00:19<00:18, 9.89it/s]
52%|#####1 | 192/370 [00:19<00:18, 9.86it/s]
52%|#####2 | 193/370 [00:19<00:18, 9.80it/s]
53%|#####2 | 195/370 [00:19<00:17, 9.88it/s]
53%|#####3 | 197/370 [00:20<00:17, 9.85it/s]
54%|#####3 | 198/370 [00:20<00:17, 9.80it/s]
54%|#####3 | 199/370 [00:20<00:17, 9.85it/s]
54%|#####4 | 201/370 [00:20<00:17, 9.83it/s]
55%|#####4 | 202/370 [00:20<00:17, 9.78it/s]
55%|#####5 | 204/370 [00:20<00:16, 9.87it/s]
56%|#####5 | 206/370 [00:21<00:16, 9.91it/s]
56%|#####6 | 208/370 [00:21<00:16, 9.94it/s]
57%|#####6 | 210/370 [00:21<00:16, 9.96it/s]
57%|#####7 | 212/370 [00:21<00:15, 9.97it/s]
58%|#####7 | 214/370 [00:21<00:15, 9.92it/s]
58%|#####8 | 215/370 [00:21<00:15, 9.86it/s]
58%|#####8 | 216/370 [00:22<00:15, 9.73it/s]
59%|#####8 | 217/370 [00:22<00:15, 9.71it/s]
59%|#####9 | 219/370 [00:22<00:15, 9.82it/s]
60%|#####9 | 221/370 [00:22<00:15, 9.88it/s]
60%|###### | 223/370 [00:22<00:14, 9.92it/s]
61%|###### | 225/370 [00:22<00:14, 9.95it/s]
61%|######1 | 227/370 [00:23<00:14, 9.96it/s]
62%|######1 | 229/370 [00:23<00:14, 9.98it/s]
62%|######2 | 231/370 [00:23<00:13, 9.98it/s]
63%|######2 | 232/370 [00:23<00:13, 9.92it/s]
63%|######2 | 233/370 [00:23<00:13, 9.85it/s]
63%|######3 | 234/370 [00:23<00:13, 9.80it/s]
64%|######3 | 235/370 [00:24<00:15, 8.86it/s]
64%|######3 | 236/370 [00:24<00:14, 9.09it/s]
64%|######4 | 238/370 [00:24<00:14, 9.38it/s]
65%|######4 | 239/370 [00:24<00:13, 9.43it/s]
65%|######4 | 240/370 [00:24<00:13, 9.48it/s]
65%|######5 | 241/370 [00:24<00:13, 9.51it/s]
65%|######5 | 242/370 [00:24<00:13, 9.44it/s]
66%|######5 | 243/370 [00:24<00:13, 9.39it/s]
66%|######5 | 244/370 [00:24<00:13, 9.45it/s]
66%|######6 | 246/370 [00:25<00:12, 9.69it/s]
67%|######7 | 248/370 [00:25<00:12, 9.81it/s]
68%|######7 | 250/370 [00:25<00:12, 9.88it/s]
68%|######8 | 252/370 [00:25<00:11, 9.92it/s]
69%|######8 | 254/370 [00:25<00:11, 9.95it/s]
69%|######8 | 255/370 [00:26<00:11, 9.88it/s]
69%|######9 | 256/370 [00:26<00:11, 9.74it/s]
69%|######9 | 257/370 [00:26<00:11, 9.71it/s]
70%|######9 | 258/370 [00:26<00:11, 9.69it/s]
70%|####### | 259/370 [00:26<00:11, 9.67it/s]
71%|####### | 261/370 [00:26<00:11, 9.81it/s]
71%|####### | 262/370 [00:26<00:11, 9.76it/s]
71%|#######1 | 263/370 [00:26<00:11, 9.73it/s]
72%|#######1 | 265/370 [00:27<00:10, 9.84it/s]
72%|#######2 | 267/370 [00:27<00:10, 9.90it/s]
73%|#######2 | 269/370 [00:27<00:10, 9.93it/s]
73%|#######3 | 271/370 [00:27<00:09, 9.96it/s]
74%|#######3 | 273/370 [00:27<00:09, 9.97it/s]
74%|#######4 | 275/370 [00:28<00:09, 9.98it/s]
75%|#######4 | 276/370 [00:28<00:09, 9.91it/s]
75%|#######4 | 277/370 [00:28<00:09, 9.85it/s]
75%|#######5 | 278/370 [00:28<00:09, 9.79it/s]
76%|#######5 | 280/370 [00:28<00:09, 9.87it/s]
76%|#######6 | 282/370 [00:28<00:08, 9.92it/s]
76%|#######6 | 283/370 [00:28<00:08, 9.91it/s]
77%|#######6 | 284/370 [00:29<00:08, 9.87it/s]
77%|#######7 | 285/370 [00:29<00:08, 9.81it/s]
77%|#######7 | 286/370 [00:29<00:08, 9.86it/s]
78%|#######7 | 288/370 [00:29<00:08, 9.92it/s]
78%|#######8 | 290/370 [00:29<00:08, 9.87it/s]
79%|#######8 | 291/370 [00:29<00:08, 9.82it/s]
79%|#######8 | 292/370 [00:29<00:07, 9.77it/s]
79%|#######9 | 293/370 [00:29<00:07, 9.73it/s]
80%|#######9 | 295/370 [00:30<00:07, 9.84it/s]
80%|######## | 297/370 [00:30<00:07, 9.90it/s]
81%|######## | 298/370 [00:30<00:07, 9.90it/s]
81%|########1 | 300/370 [00:30<00:07, 9.96it/s]
82%|########1 | 302/370 [00:30<00:06, 9.97it/s]
82%|########2 | 304/370 [00:31<00:06, 9.98it/s]
83%|########2 | 306/370 [00:31<00:06, 9.99it/s]
83%|########2 | 307/370 [00:31<00:06, 9.92it/s]
83%|########3 | 308/370 [00:31<00:06, 9.85it/s]
84%|########3 | 309/370 [00:31<00:06, 9.80it/s]
84%|########3 | 310/370 [00:31<00:06, 9.75it/s]
84%|########4 | 311/370 [00:31<00:06, 9.71it/s]
85%|########4 | 313/370 [00:31<00:05, 9.83it/s]
85%|########5 | 315/370 [00:32<00:05, 9.90it/s]
85%|########5 | 316/370 [00:32<00:05, 9.84it/s]
86%|########5 | 317/370 [00:32<00:05, 9.78it/s]
86%|########5 | 318/370 [00:32<00:05, 9.74it/s]
86%|########6 | 319/370 [00:32<00:05, 9.71it/s]
86%|########6 | 320/370 [00:32<00:05, 9.68it/s]
87%|########6 | 321/370 [00:32<00:05, 9.66it/s]
87%|########7 | 322/370 [00:32<00:04, 9.65it/s]
87%|########7 | 323/370 [00:32<00:04, 9.64it/s]
88%|########7 | 324/370 [00:33<00:04, 9.63it/s]
88%|########7 | 325/370 [00:33<00:04, 9.63it/s]
88%|########8 | 327/370 [00:33<00:04, 9.80it/s]
89%|########8 | 328/370 [00:33<00:04, 9.75it/s]
89%|########8 | 329/370 [00:33<00:04, 9.71it/s]
89%|########9 | 330/370 [00:33<00:04, 9.71it/s]
89%|########9 | 331/370 [00:33<00:03, 9.77it/s]
90%|######### | 333/370 [00:34<00:03, 9.87it/s]
90%|######### | 334/370 [00:34<00:03, 9.90it/s]
91%|######### | 335/370 [00:34<00:03, 9.54it/s]
91%|######### | 336/370 [00:34<00:03, 9.66it/s]
91%|#########1| 337/370 [00:34<00:03, 9.55it/s]
91%|#########1| 338/370 [00:34<00:03, 9.56it/s]
92%|#########1| 339/370 [00:34<00:03, 9.58it/s]
92%|#########1| 340/370 [00:34<00:03, 9.59it/s]
92%|#########2| 341/370 [00:34<00:03, 9.49it/s]
92%|#########2| 342/370 [00:34<00:02, 9.53it/s]
93%|#########2| 344/370 [00:35<00:02, 9.74it/s]
94%|#########3| 346/370 [00:35<00:02, 9.84it/s]
94%|#########4| 348/370 [00:35<00:02, 9.90it/s]
95%|#########4| 350/370 [00:35<00:02, 9.93it/s]
95%|#########5| 352/370 [00:35<00:01, 9.95it/s]
96%|#########5| 354/370 [00:36<00:01, 9.97it/s]
96%|#########5| 355/370 [00:36<00:01, 9.95it/s]
96%|#########6| 356/370 [00:36<00:01, 9.90it/s]
96%|#########6| 357/370 [00:36<00:01, 9.75it/s]
97%|#########6| 358/370 [00:36<00:01, 9.72it/s]
97%|#########7| 360/370 [00:36<00:01, 9.83it/s]
98%|#########7| 362/370 [00:36<00:00, 9.89it/s]
98%|#########8| 363/370 [00:37<00:00, 9.92it/s]
99%|#########8| 365/370 [00:37<00:00, 9.87it/s]
99%|#########8| 366/370 [00:37<00:00, 9.82it/s]
99%|#########9| 368/370 [00:37<00:00, 9.89it/s]
100%|##########| 370/370 [00:37<00:00, 9.93it/s]
100%|##########| 370/370 [00:37<00:00, 9.79it/s]
<shap.explainers._kernel.Kernel object at 0x7fa22c489490>
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 30.202 seconds)