So here’s my code using shap :
Since I just plot three times the same shape values, I’d expect the three plots to be the same. However, it keeps on changing. After some research, it seems that a new value appear at the top at each call, but why ? Is it a bug in shap ?
Edit 1 : I tried loading the same model between each call of shap.plots.beeswarm
, but the results are still different.
Advertisement
Answer
Thanks to @jared_mamrot I could find a solution. I just had to change the code of shap’s function beeswarm :
Line 57 : shap_exp = shap_values
replaced by :
Line 57 : shap_exp = copy.deepcopy(shap_values)
Make sure to import the library at the top of the code :
import copy
Edit : If you don’t want to change the source code, just give a deep copy of shap_values while calling beeswarm like so :
import copy shap.plots.beeswarm(copy.deepcopy(shap_values), max_display=15)