问题标签 [shap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
keras - AttributeError:“顺序”对象没有属性“评估”
''' 我正在使用 SHAP 进行模型分析,在调用 'DeepExplainer' 时,我收到“AttributeError: 'Sequential' object has no attribute 'eval'”
我正在使用带有 keras 而不是张量流的 theano,因为 SHAP 存在一些版本不匹配问题,我在其他问题中也发布过。所以现在我正在尝试相同的东西,但是这一次,_Backend 我正在使用 PyTorch 并且模型构建很好,但是在使用 SHAP DeepExplainer 时它会抛出属性错误,我是 Model Explainer 域的这种类型错误的新手'''
输入:
输出:没有错误
之后: 输入:
错误:
解决此错误的任何帮助或方向?
python - 获取 one-hot 编码的 H2OFrame
我在 H2O 中使用 xgboost 进行二进制分类任务。数据集有几个分类特征,模型在训练期间对其应用单热编码。
现在我想使用 SHAP ( https://github.com/slundberg/shap ) 在本地解释预测。为此,最好让数据帧具有一次性编码的列和值。但是,我似乎无法从 H2O 模型中得到这个。
我可能可以手动重新创建一次性编码,但也许有人知道更快的解决方案?
deep-learning - 使用 PyTorch RNN / LSTM 的 SHAP 值
有没有办法做到以上几点?SHAP包非常有用,并且非常适用于 PyTorch 神经网络。对于 PyTorch RNN,我收到以下错误消息(对于 LSTM,它相同):
似乎它不起作用,但有什么解决方法吗?有人有使用 PyTorch 和 SHAP 的经验吗?
matplotlib - How to customize matplotlib plots using gcf() or gca()?
I am using a package called shap
which has a integrated plot function. However i want to adjust some things like the labels, legend, coloring, size etc.
apparently due to the developer thats possible via using plt.gcf().
I call the plot like this, this will give a figure object but i am not sure how to use it:
UPDATE / SOLUTION Finally i got everything adjusted as i wanted it by doing the following:
python - shap:绘图功能
我尝试创建一个 SHAP 总结图,当它们提供如下时按特征值着色:
但我得到了这个错误:
-------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用最后一次)~/anaconda3/envs/naboo-env/lib/python3.6/site -packages/IPython/core/formatters.py in call (self, obj) 339 pass 340 else: --> 341 return printer(obj) 342 # 最后寻找特殊方法名 343 method = get_real_method(obj, self.print_method)
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/IPython/core/pylabtools.py in (fig) 242 243 if 'png' in formats: --> 244 png_formatter.for_type(图, lambda fig: print_figure(fig, 'png', **kwargs)) 245 if 'retina' in formats or 'png2x' in formats: 246 png_formatter.for_type(Figure, lambda fig:retina_figure(fig, **kwargs))
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/IPython/core/pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs) 126 127 bytes_io = BytesIO() --> 128 fig.canvas.print_figure(bytes_io, **kw) 129 数据 = bytes_io.getvalue() 130 如果 fmt == 'svg':
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/backend_bases.py in print_figure(自我,文件名,dpi,facecolor,edgecolor,方向,格式,**kwargs)2210
方向=方向, 2211 dryrun=True, -> 2212 **kwargs) 2213 渲染器 = self.figure._cachedRenderer 2214 bbox_inches = self.figure.get_tightbbox(renderer)~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in print_png(self, filename_or_obj, *args, **kwargs) 515 516 def print_png(self, filename_or_obj, *args, **kwargs): --> 517 FigureCanvasAgg.draw(self) 518 renderer = self.get_renderer() 519 original_dpi = renderer.dpi
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in draw(self) 435 # if toolbar: 436 # toolbar.set_cursor(cursors.WAIT) --> 437 self.figure.draw(self.renderer) 438 # 一个 GUI 类可能需要使用这个绘图来更新一个窗口,所以 439 # 不要忘记调用超类。
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs) 53 renderer.start_filter() 54 ---> 55 return draw(artist, renderer, *args, **kwargs) 56 finally: 57 如果 artist.get_agg_filter() 不是 None:
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/figure.py in draw(self, renderer) 1491 1492
mimage._draw_list_compositing_images(-> 1493 渲染器,self,artist,self.suppressComposite ) 1494 1495
渲染器.close_group('图')~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, Artists, suppress_composite) 139 if not_composite has_images: 140 for a in Artists: - -> 141 a.draw(renderer) 142 else: 143 # 将任何相邻的图像合成在一起
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs) 53 renderer.start_filter() 54 ---> 55 return draw(artist, renderer, *args, **kwargs) 56 finally: 57 如果 artist.get_agg_filter() 不是 None:
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/axes/_base.py in draw(self, renderer, inframe) 2633
renderer.stop_rasterizing() 2634 -> 2635 mimage._draw_list_compositing_images(渲染器,自我,艺术家)2636 2637 renderer.close_group('axes')~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, Artists, suppress_composite) 139 if not_composite has_images: 140 for a in Artists: - -> 141 a.draw(renderer) 142 else: 143 # 将任何相邻的图像合成在一起
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs) 53 renderer.start_filter() 54 ---> 55 return draw(artist, renderer, *args, **kwargs) 56 finally: 57 如果 artist.get_agg_filter() 不是 None:
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/collections.py in draw(self, renderer) 909 def draw(self, renderer): 910 self.set_sizes(self._sizes, self.figure.dpi) --> 911 Collection.draw(self, renderer) 912 913
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs) 53 renderer.start_filter() 54 ---> 55 return draw(artist, renderer, *args, **kwargs) 56 finally: 57 如果 artist.get_agg_filter() 不是 None:
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/collections.py in draw(self, renderer) 262 renderer.open_group( self.class.name , self.get_gid ()) 263 --> 264 self.update_scalarmappable() 265 266 变换,transOffset,偏移,路径 = self._prepare_points()
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/collections.py in update_scalarmappable(self) 806 return 807 if self._is_filled: --> 808 self._facecolors = self.to_rgba( self._A,self._alpha)809 elif self._is_stroked:810 self._edgecolors = self.to_rgba(self._A,self._alpha)
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/cm.py in to_rgba(self, x, alpha, bytes, norm) 272 x = ma.asarray(x) 273 if norm : --> 274 x = self.norm(x) 275 rgba = self.cmap(x, alpha=alpha, bytes=bytes) 276 return rgba
~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/matplotlib/colors.py in call (self, value, clip) 945 result.fill(0) # 还是应该全部屏蔽?还是0.5?946 elif vmin > vmax: --> 947 raise ValueError("minvalue must be less than or equal to maxvalue") 948 else: 949 if clip:
ValueError:最小值必须小于或等于最大值
python - SHAP值能说明吗?
我在使用 SHAP 值来解释基于树的模型时遇到问题。
( https://github.com/slundberg/shapsd )
首先,我输入了大约 30 个特征,其中 2 个特征之间具有高度正相关。
之后,我训练 XGBoost 模型(python)并查看 2 个特征的 SHAP 值,SHAP 值具有负相关。
你们能向我解释一下,为什么 2 个特征之间的输出 SHAP 值的相关性与输入相关性不同?我可以相信SHAP的输出吗?
==========================
输入之间
的相关性:0.91788 SHAP 值之间的相关性:-0.661088
2个特征是
1)省内人口和
2)省内家庭数。
模型性能
训练 AUC:0.73
测试 AUC:0.71
python - 将 SHAP 值聚合到特征集是否有效?
SHAP 值似乎是相加的,例如,整体特征重要性图只是简单地将每个特征的绝对 SHAP 值相加并进行比较。这使我们能够将 SHAP 用于全局重要性和局部重要性。我们还可以以相同的方式获得特定数据记录子集的特征重要性。
出于同样的原因,获取变量集的聚合 SHAP 值是否有效?例如,“身高”、“体重”和“眼睛颜色”进入“人类描述”或“温度”、“湿度”和“气压”进入“天气”并相应地对它们进行排名。
从理论上讲,我不明白为什么不这样做,但如果有任何问题,我会很感激对此的反馈。
r - 带有 Keras 模型的 SHAP:操作数无法与形状一起广播 (2,6) (10,)
我正在从 R 中的库 shapper 运行 SHAP,以在 Keras CNN 模型上进行分类模型插入:
我做了一个简单的可复制示例
我的 CNN 模型
我的形状命令
我收到此错误:
shap - CNN模型中不同类型输入的SHAP解释
我有一个问题要使用 SHAP 来解释我的 CNN 模型的结果。我的 CNN 模型采用 2 个不同类型的输入。一个是图像,另一个是特征向量。我通过考虑这两者来训练和测试模型。建立模型没有问题。
当我尝试使用 SHAP 同时解释这两个输入的结果时,它不起作用。我实际上已经尝试过 deepexplainer 和 gradientexplainer。我得到的错误如下:
文件“”,第 1 行,在 shap_values = explainer.shap_values([x_test[:3], feature_test[:3]])
文件“C:\Users\kaz10003\AppData\Local\Continuum\anaconda3\lib\site-> > packages\shap\explainers\deep_init_.py”,第 119 行,在 shap_values 返回 self.explainer.shap_values(X,ranked_outputs, output_rank_order)
文件“C:\Users\kaz10003\AppData\Local\Continuum\anaconda3\lib\site-> packages\shap\explainers\deep\deep_tf.py”,第 284 行,在 shap_values diffs = model_output[:, l] - self .expected_value[l] - > output_phis[l].sum(axis=tuple(range(1, output_phis[l].ndim)))
AttributeError:“列表”对象没有属性“总和”
有人知道SHAP是否支持这种实现吗?这是我的代码: