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

在R中绘制XGBoost模型预测结果瀑布图求助

在R中绘制XGBoost预测分数的瀑布图(区分CR类别)

步骤1:加载必要的R包

先确保安装并加载所需工具包:

# 未安装的话先执行安装
# install.packages(c("xgboost", "dplyr", "ggplot2"))

library(xgboost)
library(dplyr)
library(ggplot2)

步骤2:获取模型预测分数

假设你的测试集数据框为test_data,训练好的XGBoost模型为xgb_model,提取预测分数:

# 把测试集特征转为XGBoost要求的DMatrix格式(排除目标变量CR)
test_matrix <- xgb.DMatrix(data = as.matrix(test_data %>% select(-CR)), label = test_data$CR)

# 预测二分类概率(假设Complete为正类,输出的是该类别的预测概率)
test_data$pred_score <- predict(xgb_model, test_matrix)

步骤3:准备绘图数据

为了清晰展示分类区分效果,将样本按预测分数排序并添加索引:

plot_data <- test_data %>%
  arrange(pred_score) %>%  # 按预测分数从小到大排序
  mutate(id = row_number()) # 添加样本索引作为x轴位置

步骤4:绘制基础瀑布图

这个图用条形展示每个样本的预测分数,按CR类别着色,直观呈现两类的分布差异:

ggplot(plot_data, aes(x = id, y = pred_score, fill = CR)) +
  geom_col(width = 1) +  # 条形宽度设为1,形成连续瀑布效果
  labs(
    title = "XGBoost预测分数对CR类别的区分效果",
    x = "样本(按预测分数排序)",
    y = "模型预测分数",
    fill = "CR类别"
  ) +
  theme_minimal() +
  # 自定义颜色增强区分度,可根据你的示例图调整颜色码
  scale_fill_manual(values = c("Complete" = "#2ecc71", "nonComplete" = "#e74c3c"))

可选:绘制累积式瀑布图

如果想观察累积预测分数的趋势,可添加累积折线:

# 计算累积预测分数
plot_data <- plot_data %>%
  mutate(cum_pred = cumsum(pred_score))

ggplot(plot_data, aes(x = id)) +
  geom_col(aes(y = pred_score, fill = CR), width = 1) +
  geom_line(aes(y = cum_pred), color = "#3498db", size = 1) +
  labs(
    title = "XGBoost预测分数累积瀑布图",
    x = "样本(按预测分数排序)",
    y = "预测分数/累积预测分数",
    fill = "CR类别"
  ) +
  theme_minimal() +
  scale_fill_manual(values = c("Complete" = "#2ecc71", "nonComplete" = "#e74c3c"))

关键说明

  • 按预测分数排序后,若模型区分效果好,Complete和nonComplete的条形会集中在不同的x轴区域。
  • 颜色、标题等元素可完全根据你的示例图需求修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:15:42