【分面混淆矩阵批处理】使用R语言的mlr3verse包对八种

B站影视 日本电影 2025-04-21 00:44 1

摘要:各位亲大家好,前一期我们分享了使用R语言的mlr3verse包对八种机器学习模型进行统一接口批处理以及ROC曲线综合评价方法,今天我们继续进行混淆矩阵综合评价方法。

各位亲大家好,前一期我们分享了使用R语言的mlr3verse包对八种机器学习模型进行统一接口批处理以及ROC曲线综合评价方法,今天我们继续进行混淆矩阵综合评价方法。

【批处理机器学习】

R语言如何将Logistic、决策树、随机森林、SVM、神经网络、XGBoost、lightGBM、朴素贝叶斯、KNN等多种机器学习模型预测效果的DCA曲线、CIC曲线、ROC曲线、校准曲线、混淆矩阵图示,绘制到一张图上综合评价?

我们需要使用R语言机器学习mlr3包、mlr3verse包对八种模型进行统一接口的批处理。

mlr3verse 是 R 语言中一组用于机器学习的包,旨在提供一个灵活、模块化和可扩展的框架,用于构建和评估机器学习模型。它由多个紧密集成的包组成,共同提供了一个全面的机器学习工作流程,从数据预处理到模型训练、调优和评估。

我们今天仍以一个新的“Sonar”数据集为例,演示一下使用R语言的mlr3包与mlr3verse包,对Logistic、决策树、随机森林、SVM、神经网络、XGBoost、lightGBM、朴素贝叶斯、KNN等8种机器学习模型进行批处理并混淆矩阵综合评价。

Sonar数据集

Sonar数据集来源于UCl数据库,UCI是加州大学欧文分校(University of Califomnialnvine)提出的用于机器学习的数据库。

声纳数据集(Sonar dataset )涉及预测根据给定声纳从不同角度返回的强度预测目标物体是岩石还是矿井。数据集一共有208个观察值,60个特征,2个类别(M为矿井,R为岩石),每个类的观察值数量不均等。在该数据集上所做的预测最普遍类的基准性能是约 53%的分类准确率,最佳结果达到约 88% 的分类准确率。

与我们前期使用的二分类因变量的“示例数据集”结构类似。

我们还是先进行环境整理,安装加载批处理并CAL曲线(校准曲线)综合评价所需要的包,然后进行数据准备:

#一、环境配置与数据准备#安装必要包(首次运行需解除注释)#install.packages(c("mlr3verse", "ggplot2", "patchwork", "ggsci"))#加载核心包library(mlr3verse) # 机器学习框架library(ggplot2) # 可视化library(patchwork) # 多图排版library(ggsci) # 科学配色#使用Sonar数据集示例data("Sonar", package = "mlbench")set.seed(2025)task

然后我们还是进行这八种模型的批量拟合,并训练及预测,得到模型拟合效果数据:

#二、多模型训练与预测#定义8个学习器(确保分类预测)learners

#批量训练与预测predictions

随后进行混淆矩阵四格表参数提取,自定义绘图函数,进行绘图的准备:

#三、混淆矩阵可视化函数#自定义混淆矩阵绘图函数plot_conf_matrix

ggplot(cm_df, aes(x = Actual, y = Predicted, fill = Freq)) +geom_tile(color = "white", linewidth = 0.5) +geom_text(aes(label = Freq), color = "white", size = 5) +scale_fill_material("blue-grey", limits = c(0, max(cm_dfmodel)) +theme_minimal(base_size = 12) +theme(panel.grid = element_blank,vaxis.text.x = element_text(angle = 45, hjust = 1))}

我们分别绘制八个模型的单独的混淆矩阵四格表图示,进而组合为2*4布局的组合图:

#四、可视化实现

#1. 生成单模型图列表single_plots

single_plots

#2. 组合为2x4布局combined_plots

combined_plots

或者使用另一种方式,使用do.call函数及ggplot函数对八个模型混淆矩阵图进行绘制:

##3. 合并为单一对比图merged_data

merged_plot

进而可以将这些图导出至指定位置。

通过混淆矩阵的四格表,我们可以计算很多指标,比如敏感度、特异度、阳性预测值、阴性预测值、约登指数、分类ROC曲线下面积AUC等等。

我们再重新拟合一下八种模型,配合结果表格的代码语句输出。

#混淆矩阵评价各指标值的数据输出#六、评估指标批量计算#批量训练模型#定义8个学习器(确保概率预测)learners

library(caret)trained_models

可以将模型预测值与真实值形成四格表并计算各个指标,提取核心指标形成列表:

#生成评估报告eval_metrics

#转换为caret需要的因子格式pred_factor

#计算混淆矩阵及指标cm

#提取核心指标data.frame(Model = model_name,Accuracy = cmbyClass["Sensitivity"],Specificity = cmbyClass["F1"],PPV = cmbyClass["Neg Pred Value"],AUC = as.numeric(mlr3measures::auc(truth = predprob[, "M"],positive = "M")))}) %>% bind_rows

#格式优化eval_metrics[, -1]

可以将上述生成的结果列表展示,并可以使用writexl包进行Excel表格输出:

#四、结果输出#控制台打印print(eval_metrics)#导出并查看结果数据集library(writexl) #加载包write_xlsx(eval_metrics, "C:/Users/L/Desktop/混淆矩阵result.xlsx")

或者使用openxlsx包的Workbook函数,对表格进行优化后,导出至Excel表格。

#生成Excel报告library(openxlsx)wb

这四期我们分享了R语言如何将Logistic、决策树、随机森林、SVM、神经网络、XGBoost、lightGBM、朴素贝叶斯、KNN等多种机器学习模型预测效果的ROC曲线、DCA曲线、校准曲线、混淆矩阵综合评价及图示。

后续我们将继续分享CIC曲线多模型批量评价的方法,敬请期待!!!

医学统计数据分析分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,机器学习,生存分析,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!

来源:热情的菠萝g2

相关推荐