You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何增大H2O SHAP汇总图的点大小?现有方法存在问题

解决H2O SHAP汇总图点大小问题

你之前的做法会叠加新的点图层,但因为没指定正确的数据源和映射,导致新点位偏移,而且原图层没被替换,所以出现两层点。给你两种可行的解决办法:

方法一:直接修改已有绘图对象的点参数

h2o.shap_summary_plot返回的是ggplot对象,你可以直接找到里面的点图层,修改它的size参数:

# 获取原始绘图对象
plt <- h2o.shap_summary_plot(model, test)
# 找到点图层(通常是第一个图层,可根据实际情况调整索引)
plt$layers[[1]]$aes_params$size <- 4
# 显示修改后的图
print(plt)

如果索引不对,可以打印plt$layers查看每个图层的类型,找到对应GeomPoint的图层再修改。

方法二:提取SHAP数据自定义绘图(更灵活)

如果需要完全自定义样式,建议直接提取SHAP值自己绘制:

# 1. 提取SHAP贡献值
shap_contrib <- h2o.predict_contributions(model, test)
# 2. 转成data.frame并整理格式
shap_df <- as.data.frame(shap_contrib)
# 去掉BIAS列,保留特征的SHAP值
shap_df <- shap_df[, !names(shap_df) %in% "BIAS"]
# 转成长格式
library(tidyr)
shap_long <- pivot_longer(shap_df, cols = everything(), names_to = "feature", values_to = "shap_value")
# 3. 按特征的SHAP绝对值均值排序(和原生图逻辑一致)
library(dplyr)
feature_order <- shap_long %>%
  group_by(feature) %>%
  summarise(mean_abs_shap = mean(abs(shap_value))) %>%
  arrange(desc(mean_abs_shap)) %>%
  pull(feature)
shap_long$feature <- factor(shap_long$feature, levels = feature_order)
# 4. 自定义绘图,控制点大小
library(ggplot2)
ggplot(shap_long, aes(x = shap_value, y = feature)) +
  geom_point(size = 4, alpha = 0.6) +  # 这里设置点大小,alpha可选控制透明度
  labs(x = "SHAP 值", y = "特征") +
  theme_bw()

这样就能得到点大小符合要求的SHAP汇总图,不会出现点位偏移或双层点的问题。

内容的提问来源于stack exchange,提问作者MLearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:57:51