当前位置: 首页 > wzjs >正文

我想自己做网站打开网址资料网站

我想自己做网站,打开网址资料网站,做pc端网站代理商,怎么上线网站Day 14 训练 SHAP(SHapley Additive exPlanations)1.创建解释器2.将特征贡献可视化第一部分:绘制SHAP特征重要性条形图第二部分:绘制SHAP特征重要性蜂巢图 SHAP(SHapley Additive exPlanations) 旨在解释复…

Day 14 训练

  • SHAP(SHapley Additive exPlanations)
  • 1.创建解释器
  • 2.将特征贡献可视化
      • 第一部分:绘制SHAP特征重要性条形图
      • 第二部分:绘制SHAP特征重要性蜂巢图


SHAP(SHapley Additive exPlanations)

旨在解释复杂机器学习模型(如随机森林、梯度提升树、神经网络等 “黑箱” 模型)对特定输入的预测原因。其核心基于合作博弈论中的 Shapley 值。

  • 将模型的特征比作玩家,预测样本输出值是游戏目标,不同特征子集合作进行预测,特征子集预测得到的值是奖励 / 价值。通过计算每个特征的 Shapley 值来确定其对预测的贡献,具体是考虑所有可能的特征组合,计算特征在每种组合下的边际贡献,再求加权平均。
  • SHAP 具有加性解释特性,模型预测值等于基准值(模型在训练或背景数据集上的平均预测输出)加上所有特征的 SHAP 值之和。
  • SHAP 需要为每个样本的每个特征计算贡献值即 SHAP 值,形成 shap_values 数组。对于回归问题,shap_values 是形状为(n_samples,n_features)的数组;对于分类问题,通常返回一个列表,列表长度等于类别数,每个元素是(n_samples,n_features)数组,表示各特征对预测各类别的贡献。总之,SHAP 通过计算特征边际贡献,将模型预测分解到每个特征上,生成 shap_values 数组来解释预测。

1.创建解释器

import shap
import matplotlib.pyplot as pltexplainer = shap.TreeExplainer(rf_model)
shap_values = explainer.shap_values(X_test)
print(shap_values)
print(shap_values.shape) # 第一维是是样本数,第二维度是特征数量,第三维度是类别数量。
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)

创建解释器对象

  • explainer = shap.TreeExplainer(rf_model):创建一个 SHAP 解释器对象。shap.TreeExplainer 是 SHAP 库中用于解释基于树的模型(如随机森林、梯度提升树等)的解释器类。rf_model 是一个已经训练好的随机森林模型对象,将其传递给 TreeExplainer,解释器就会根据该模型的结构和参数来计算特征的 SHAP 值。通过这个解释器对象,我们可以进一步获取模型预测的解释信息。

计算 SHAP 值

  • shap_values = explainer.shap_values(X_test):计算测试数据集 X_test 的 SHAP 值。X_test 是一个二维数组,包含了测试样本的特征值。explainer.shap_values 方法会根据之前创建的解释器对象和测试数据集,计算出每个特征对于每个测试样本的 SHAP 值,并将结果存储在 shap_values 变量中。SHAP 值是一个与特征数量相同的数组,其中每个元素表示一个特征对模型预测的贡献度。正的 SHAP 值表示该特征对预测结果有正向影响,负的 SHAP 值表示有负向影响。通过这些 SHAP 值,我们可以分析出哪些特征对模型的预测结果起到了关键作用,以及它们是如何影响预测结果的。

2.将特征贡献可视化

print("1.shap 特征重要性条形图")
shap.summary_plot(shap_values[:,:,0], X_test, plot_type="bar",show=False)
plt.title("SHAP Feature Importance (Class 0)")
plt.show()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()

这段代码是用于绘制SHAP(SHapley Additive exPlanations)特征重要性图的Python代码,主要使用了shap库和matplotlib库。下面对这段代码进行逐行解释:

第一部分:绘制SHAP特征重要性条形图

print("1.shap 特征重要性条形图")
  • 这行代码会在控制台打印一条消息,提示接下来将绘制SHAP特征重要性条形图。
shap.summary_plot(shap_values[:,:,0], X_test, plot_type="bar", show=False)
  • shap.summary_plotshap 库中的一个函数,用于绘制特征重要性图。
  • shap_values[:,:,0]shap_values 是一个三维数组,这里取其第一个维度的所有值,通常对应于模型的某个类别(这里是类别0)。
  • X_test:这是测试数据集,用于提供特征名称和数据范围等信息。
  • plot_type="bar":指定绘制条形图。
  • show=False:表示不直接显示图形,这样可以在绘制完图形后继续使用 matplotlib 修改图形元素。

第二部分:绘制SHAP特征重要性蜂巢图

print("--- 2. SHAP 特征重要性蜂巢图 ---")
  • 这行代码会在控制台打印一条消息,提示接下来将绘制SHAP特征重要性蜂巢图。
shap.summary_plot(shap_values[:, :, 0], X_test, plot_type="violin", show=False, max_display=10)
  • 同样使用 shap.summary_plot 函数绘制特征重要性图。
  • plot_type="violin":指定绘制蜂巢图(小提琴图)。
  • show=False:不直接显示图形,以便后续使用 matplotlib 修改图形元素。
  • max_display=10:限制最多显示10个特征。

@浙大疏锦行

http://www.dtcms.com/wzjs/423772.html

相关文章:

  • 好看的网站 你知道的2021免费友情链接平台
  • 建站之星安装教程网站功能优化
  • 兴国做网站市场调研报告怎么写
  • 深圳网站界面设计搜索引擎优化的英文缩写是什么
  • 中国建设银行的招投标网站搜索app下载安装
  • 网站开发心得小学生简短小新闻摘抄
  • 南京做网站设计网络推广的优势有哪些
  • 郑州做网站那家好买了500元黑科技引流靠谱吗
  • 网站建设方案书封面搜盘网
  • 建筑工程网官网招聘资料员seo教学网seo
  • wordpress只显示文字东莞网络优化服务商
  • 建网站wordpress关键词搜索引擎
  • 好看的网站 你明白吗二级域名注册
  • wordpress更新报错关键词推广seo怎么优化
  • 宁波网站开发公司怎么样软件培训机构排名
  • 网站建设业务怎么跑提交百度一下
  • 域名到期了网站会打不开吗株洲seo排名
  • js 网站客服代码百度识图官网
  • 潍坊网站设计公司网络seo培训
  • 美国人做网站用的是什么字体云服务器免费
  • 苗圃网站模版平台推广方式方法是什么
  • 网站报备流程seo优化靠谱吗
  • 响应式网站建设济南网络培训平台有哪些
  • 公众号网站建设谷歌在线浏览器免费入口
  • 太原有做网站的吗网络营销推广公司有哪些
  • 做积分网站公司品牌宣传
  • 做网站需要了解什么优化一下
  • 专门做微信推送的网站seo研究院
  • 自己做网站如何赚钱吗seo岗位职责
  • 新人如何做自己的网站搜索引擎优化内容包括哪些方面