Python60日基础学习打卡D14

SHAP原理简介

机器学习随机森林模型(代码见前几章),是一个黑盒模型,对其做shap可解释性分析,可以计算每个特征对预测结果的shap值,而在模型训练,去做预测的过程中,预测的结果为基准值加上各特征对应的shap值。

使用SHAP最重要的问题

搞清楚shap的维度要求!!!分类问题和回归问题输出的shap_values的形状不同。

分类问题:shap_values.shape =(n_samples, n_features, n_classes)

回归问题:shap_values.shape = (n_samples, n_features)

数据维度的要求将是未来学习神经网络最重要的东西之一。

shap_values.shape # 第一维是样本数,第二维是特征数,第三维是类别数

可以使用如下代码进行检验,不同电脑输出可能不同,中间的2个谁和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)

例图绘制(条形图)

# --- 1. SHAP 特征重要性条形图 (Summary Plot - Bar) ---
print("--- 1. SHAP 特征重要性条形图 ---")
shap.summary_plot(shap_values[:, :, 0], X_test, plot_type="bar",show=False)  #  这里的show=False表示不直接显示图形,这样可以继续用plt来修改元素,不然就直接输出了
plt.title("SHAP Feature Importance (Bar Plot)")
plt.show()

例图绘制(蜂巢图) 

# --- 2. SHAP 特征重要性蜂巢图 (Summary Plot - Violin) ---
print("--- 2. SHAP 特征重要性蜂巢图 ---")
shap.summary_plot(shap_values[:, :, 0], X_test,plot_type="violin",show=False,max_display=10) # 这里的show=False表示不直接显示图形,这样可以继续用plt来修改元素,不然就直接输出了
plt.title("SHAP Feature Importance (Violin Plot)")
plt.show()
# 注意下上面几个参数,plot_type可以是bar和violin,max_display表示显示前多少个特征,默认是20个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值