打卡第十五天

今日作业偏思考类型,有一定难度。

参考上述文档补全剩余的几个图。

尝试确定一下shap各个绘图函数对于每一个参数的尺寸要求,如shap.force_plot力图中的数据需要满足什么形状?

确定分类问题和回归问题的数据如何才能满足尺寸,分类采取信贷数据集,回归采取单车数据集。

首先是局部特征图

mport matplotlib.pyplot as plt
import shap
explainer = shap.TreeExplainer(rf_model)

shap_values = explainer.shap_values(X_test)
shap_values2 = explainer(X_test)
print("shap_values shape:", shap_values.shape)
print("shap_values[0] shape:", shap_values[0].shape)
print("shap_values[:, :, 0] shape:", shap_values[:, :, 0].shape)
print("X_test shape:", X_test.shape)

print("--- 1. SHAP 局部特征重要性条形图 ---")
shap.plots.bar(shap_values2[:, :, 0])
plt.title("SHAP Feature Importance (Bar Plot)")
plt.show()

 

 

Summary Plot上面使用Summary Plot方法并设置参数plot_type="bar"绘制典型的特征重要性条形图,而他默认绘制Summary_plot图,他是结合了特征重要性和特征效果,取代了条形图。Summary_plot 为每一个样本绘制其每个特征的Shapley value,它说明哪些特征最重要,以及它们对数据集的影响范围。

选择两个最重要的特征并对其进行可视化

shap.dependence_plot('Maximum Open Credit', shap_values[:, :, 0], X_test, interaction_index='Years of Credit History', show=False)
plt.title("SHAP Dependence Plot for 'Maximum Open Credit' vs 'Years of Credit History")
plt.show()

 

 

下列这段代码的主要目的是使用 shap 库的 force_plot 函数可视化测试集中第一个样本的预测结果,展示每个特征对预测结果的贡献。 matplotlib=True 表示使用 matplotlib 库绘图, show=False 表示不立即显示图表,需要后续调用 plt.show() 来显示, text_rotation=30 则是设置图表中文本的旋转角度。

shap.force_plot(explainer.expected_value[0],
                shap_values[0][:, 0],
                x_test.iloc[0,:],
                matplotlib=True,
                show=False,
                text_rotation=30)
plt.title("SHAP Force Plot for Single Sample")
plt.tight_layout()
plt.show()

 

decision plot

hap.decision_plot(explainer.expected_value[0], 
                  shap_values[:, :, 0][:30], 
                  X_test.iloc[:30,:], 
                  feature_order='importance',
                  show=False)
plt.title("SHAP Decision Plot")
plt.show()

 

 @浙大疏锦行

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值