在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
相关产品推荐
相关产品推荐

