shap安装记录

环境准备:
windows10
python3.7

step1. 直接在python命令行输入

pip install shap   ## 安装python

报错1:
shap安装记录_第1张图片
解决1: 将python切换为python3.6即可(可重建一个python3.6的虚拟环境)

step2. 在pycharm中运行脚本

import xgboost
import shap

# 训练一个XGBoost 模型  
X, y = shap.datasets.boston()  
model = xgboost.train({"learning_rate": 0.1, "silent": 1}, 
                        xgboost.DMatrix(X, label=y), 100)
                        
# 对模型文件model进行解释  
explainer = shap.TreeExplainer(model)  

报错2: 上述代码块中最后一步报错:‘UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x96 in position 34: invalid start byte’
解决2: 卸载xgboost,重装xgboost1.1.0版本即可。具体原因

pip install xgboost==1.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple       ## xgboost重装

step3. 继续运行代码

# 可视化第一个样本预测的解释  
shap.force_plot(explainer.expected_value, 
                  shap_values[0,:], 
                  X.iloc[0,:], matplotlib=True)
                  
# 所有样本Shap图  
shap.force_plot(explainer.expected_value, shap_values, X)

# 计算所有特征的影响  
shap.summary_plot(shap_values, X)

# 特征重要性  
shap.summary_plot(shap_values, X, plot_type="bar")  

报错3:“AssertionError: IPython must be installed to use this visualizer! Run pip install ipython and then…”
解决3: 根据提示安装ipython

pip3 install ipython

ipython安装成功,但是在命令行输入ipython启动时,出现:
报错4:“ImportError: cannot import name ‘AsyncGenerator’”
shap安装记录_第2张图片
解决4:

pip install prompt-toolkit==2.0.10

此时直接在命令行输入"ipython"时,可以发现ipython已安装成功:
在这里插入图片描述
继续在IDE中运行完整代码,没有报错

import xgboost
import shap

# 训练一个XGBoost 模型  
X, y = shap.datasets.boston()  
model = xgboost.train({"learning_rate": 0.1, "silent": 1}, 
                        xgboost.DMatrix(X, label=y), 100)

# 对模型文件model进行解释  
explainer = shap.TreeExplainer(model)  
# 传入特征矩阵X,计算SHAP值  
shap_values = explainer.shap_values(X)    
print(shap_values.shape)

# 可视化第一个样本预测的解释  
shap.force_plot(explainer.expected_value, 
                  shap_values[0,:], 
                  X.iloc[0,:], matplotlib=True)

# 所有样本Shap图  
shap.force_plot(explainer.expected_value, shap_values, X)

# 计算所有特征的影响  
shap.summary_plot(shap_values, X)

# 特征重要性  
shap.summary_plot(shap_values, X, plot_type="bar")  

上述代码运行结果:
在这里插入图片描述
shap安装记录_第3张图片
shap安装记录_第4张图片

附: shap Github地址

你可能感兴趣的:(python)