使用R语言caret包获取测试集ROC曲线及ROC面积(AUC)的方法
caret模型测试集ROC与AUC获取方法
1. 加载依赖包
需要使用pROC包完成ROC相关计算,先完成加载:
# 未安装先执行安装 # install.packages("pROC") library(pROC)
2. 生成测试集预测概率
计算ROC需要正类的预测概率,不要直接输出分类结果:
# 输出测试集各类别的预测概率 test_pred_prob <- predict(model_knn, newdata = test, type = "prob") # 提取测试集真实标签 test_true_label <- test$target
3. 计算AUC并绘制ROC曲线
# 生成ROC对象,默认取概率矩阵第二列为正类概率,可根据你的类别名调整列索引/列名 # 若需明确指定正负类,可添加levels参数:levels = c("负类名称", "正类名称") roc_test <- roc(response = test_true_label, predictor = test_pred_prob[, 2]) # 输出测试集AUC值 auc(roc_test) # 绘制测试集ROC曲线 plot(roc_test, main = "KNN模型测试集ROC曲线", col = "#2c7fb8", lwd = 2, print.auc = TRUE) # 可直接开启print.auc参数在图上显示AUC值
补充说明
- 计算ROC时的正负类顺序需要和模型训练时
twoClassSummary识别的顺序保持一致,否则会出现AUC值小于0.5的异常情况,可通过调整roc函数的levels参数修正 - 如果需要对比多个模型的测试集表现,只需重复上述预测、计算ROC的步骤,在同一张画布上绘制多条ROC曲线即可
内容的提问来源于stack exchange,提问作者user16971617
相关产品推荐
相关产品推荐

