当前位置:   article > 正文

Shap 环境配置建议_shap安装

shap安装

Shap 安装踩坑实录(环境配置建议)

shap(SHapley Additive exPlanation)作为基于python开发的一个可解释模型包,具有封装优良,可视化方便,易上手等优点。

但是作为一个更新速度赶不上debug速度的python包,shap配置的环境极其娇气,导致我在配置的过程中踩了一堆坑,经历了整整两天纯环境配置的精神折磨。

写下这篇文章记录下自己的踩坑过程,配置shap环境过程中,使用了两台电脑控制变量法不断尝试,并结合了另一个同学的配置过程和经验,总结了一些自己的环境配置建议以及会遇到的问题的原因,希望能提供一些参考,但愿芸芸众生以后科研路上都不会受到配环境的折磨。

该篇笔记写为2023/09/28 参考建议的时候请考虑你的tensorflow是否已经更新到了4.0,该篇文章已经没有了参考价值(doge)

1. conda 安装

shap 配置环境下一般冲突,无非就是tensorflow,keras,pytorch,pandas,numpy等环境配置会有冲突,这里强烈建议不要怕麻烦,安装conda 之后专门创建一个shap的conda 环境,这里建议不要python版本过高,如并不是很稳定的3.12,不然后面tensorflow等会有冲突,我一开始就是python版本过高,以至于后面numpy一直冲突搞不定。

使用conda 创建 shap 环境
conda create -n shap python=3.9
  • 1

这里有个小技巧,如果你使用的是pycharm的话,可以通过Files 中的选项中的Settings中 load 你的shap环境,然后通过你的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

顶部找到你的shap相关的python文件然后选择Edit Configurations 单独为这个python文件选择你的shap 环境,这样并不会影响整个项目的其他python文件使用你原本的base等环境。

我用的是tensorflow,同学有用pytorch的,在使用过程中基本没有遇到问题,这里就只讨论tensorflow这个该死的东西会遇到的问题(恨)。

shap环境requirement 建议
tensorflow 2.10.0
keras 2.10.0
shap 0.42.0
pandas 2.0.3
numpy 1.25.2
  • 1
  • 2
  • 3
  • 4
  • 5

尽量使用conda 安装你需要的包

因为 pandas/numpy/keras/tensorflow 这几个包基本上就像互相看不顺眼的各个山头大王,一个不小心就会发生版本冲突,有的时候用pip随便安装一个版本,看着好像这些大王没有什么冲突,下面的wrapt啊,tensorbroad啊,这些小兵不知道怎么就不对付,一跑程序就会报错,使用conda安装报错的几率会小一些,安装完上述"大王"们后,再运行你的py程序,根据它的报错,重新安装它报错提示的包就好了。

2. shap 版本

可以通过pip 或者conda 安装 [shap](GitHub - shap/shap: A game theoretic approach to explain the output of any machine learning model.)

pip install shap
or
conda install -c conda-forge shap
  • 1
  • 2
  • 3

shap 目前github最新是0.42.0版本,不建议使用0.3的版本,第一是shap本身更新很快,用惯了0.3 后面再改会很麻烦。 第二是我曾经尝试降低我的shap版本至很多issue说work的0.35的时候,必须要不停地更新Microsoft Visual C++ Build Tool, 感觉是另外一个坑,所以不如与时俱进一些直接安装shap==0.42.0/0.41.0,也方便copy网上的代码作为应用。

3.numpy 版本

这个几乎是我shap安装过程中遇到的最大的一个问题,我到第二天才反应过来,shap冲突到底冲突在哪里,就是冲突在numpy版本。

上述已经提到,shap建议安装最近的0.4x,这里有一个问题就是0.4x的shap将会自动更新numpy至1.24 以上的版本,如果你的tensorflow 版本过低,如0.26等,他们匹配的numpy版本基本都是1.19.5等1.1X的numpy,那么当你安装0.26的tensorflow之后(numpy~=1.19.5),再去安装shap(自动更新至numpy=1.24),就会发生numpy的版本冲突,就会出现类似如下的错误

raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'object'.
`np.object` was a deprecated alias for the builtin `object`. To avoid this error in existing code, use `object` by itself. Doing this will not modify any behavior and is safe. 
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
  • 1
  • 2
  • 3
  • 4

或者是说你的np.bool 出现类似上面的错误,如果你遇到了类似报错,请检查一下你的numpy版本是否和你的tensorflow & shap 有版本冲突。

我这里曾经试图改了源码,就是把调用np.bool的代码直接改成bool,但是后面还是会有其他报错,所以这里建议不要修改shap或者tensorflow的代码,直接检查版本冲突,一劳永逸。

4.torch 安装

我在以上所有问题都解决之后,又遇到了一个问题,就是pytorch的ddl无法调用。

OSError: [WinError 126] 找不到指定的模块。 Error loading “D:\Anaconda\envs\tensorflow\lib\site-packages\torch\lib\asmjit.dll” or one of its dependencies.
  • 1

如果你遇到以上错误,说明你的pytorch安装有一部分ddl包无法正常调用,而一般都是你的原本的base环境的torch包某一部分的动态链接出了问题,这里就体现了上述重新建一个shap环境的重要性,请在你的shap环境下重新安装一个pytorch,就可以解决。

当你解决以上问题,基本上就可以愉快的调用你的shap解释你的模型了~(乐)

Again,希望芸芸众生不再受配环境的折磨!(摔)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/571248
推荐阅读
相关标签
  

闽ICP备14008679号