绘制ROC曲线和瀑布图的Python实现

310 篇文章 ¥59.90 ¥99.00
本文介绍了如何使用Python绘制ROC曲线和瀑布图来评估分类模型性能。通过导入numpy, matplotlib, sklearn库,计算FPR和TPR绘制ROC曲线,并计算AUC。同时,利用precision和recall绘制瀑布图,以便于模型性能理解和比较。" 24937249,301730,Solr多表增量导入实践,"['搜索引擎', 'Solr', '数据管理', '数据索引', 'XML配置']

绘制ROC曲线和瀑布图的Python实现

ROC曲线和瀑布图是常用于评估分类模型性能的工具,它们可以帮助我们理解模型在不同阈值下的表现,并进行性能比较。在本文中,我们将介绍如何使用Python绘制ROC曲线和瀑布图,并提供相应的源代码。

首先,我们需要导入一些必要的库,包括numpymatplotlib.pyplotsklearn.metricsnumpy用于处理数值计算,matplotlib.pyplot用于绘图,sklearn.metrics包含了计算ROC曲线和瀑布图所需的函数。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve
# 模型评估可视化 -------------------------------------------------------------- # 设置形排版参数 par(mfrow = c(2, 2), mar = c(4.5, 4.5, 3, 2), cex.lab = 1.2, cex.main = 1.4) ### 1. ROC曲线分析 --------------------------------------------------------- roc_obj <- roc(test_data$Hearing_loss, predictions$xgb) # 绘制增强版ROC曲线 plot(roc_obj, main = "ROC Curve (XGBoost)", col = "#1F77B4", lwd = 3, legacy.axes = TRUE, print.auc = TRUE, auc.polygon = TRUE, auc.polygon.col = "#FEE08B88", grid = TRUE, grid.col = "gray90", xlab = "False Positive Rate", ylab = "True Positive Rate") ### 2. 校准曲线 ------------------------------------------------------------ # 使用rms包绘制高级校准曲线 cal <- val.prob(predictions$xgb, as.numeric(test_data$Hearing_loss)-1, smooth = "loess", logistic.cal = TRUE) # 自定义绘参数 plot(cal, main = "Calibration Curve", cex = 0.8, col.ideal = "#D53E4F", lwd.ideal = 2, lty.ideal = 2, col.smooth = "#3288BD", lwd.smooth = 3, riskdist = FALSE, cex.lab = 1.2, cex.axis = 1.1) ### 3. 决策曲线分析 -------------------------------------------------------- # 将预测概率添加到测试数据 test_data$pred_prob <- predictions$xgb # 构建决策曲线对象 dca <- decision_curve( Hearing_loss ~ pred_prob, data = test_data, thresholds = seq(0, 1, by = 0.05), bootstraps = 50 ) # 绘制专业决策曲线 plot_decision_curve(dca, main = "Decision Curve Analysis", curve.names = "XGBoost Model", col = "#5E4FA2", lwd = 2, confidence.intervals = FALSE, standardize = TRUE, cost.benefit.axis = FALSE, xlab = "Threshold Probability", ylab = "Net Benefit") ### 4. SHAP可视化 ---------------------------------------------------------- # 创建shapviz对象 shap_values <- shapviz(xgb_model, X = model.matrix(~ . -1, test_data[, -which(names(test_data) == "Hearing_loss")])) # 特征重要性 sv_importance(shap_values, max_display = 15, fill_color = "#66C2A5", show_numbers = TRUE) + ggtitle("Feature Importance (SHAP Values)") + theme(plot.title = element_text(face = "bold", size = 14)) # 瀑布示例(显示第一个样本) sv_waterfall(shap_values, row_id = 1, fill_colors = c("#F46D43", "#66C2A5")) + ggtitle("Individual SHAP Explanation") + theme(plot.title = element_text(face = "bold", size = 14)) # 重置形参数 par(mfrow = c(1, 1)) # 保存所有形 ------------------------------------------------------------ # PDF格式保存(矢量) pdf(paste0(output_path, "XGBoost_Evaluation.pdf"), width = 12, height = 10) # 依次重新绘制形 plot(roc_obj) # ROC曲线 plot(cal) # 校准曲线 plot(dca) # 决策曲线 sv_importance(shap_values) # SHAP重要性 sv_waterfall(shap_values) # 瀑布 dev.off() # PNG格式保存(高分辨率) ggsave(paste0(output_path, "SHAP_Importance.png"), plot = sv_importance(shap_values), width = 10, height = 8, dpi = 300)根据这个代码绘制训练集ROC曲线
05-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值