首页 > 解决方案 > 如何计算twoClassSummary下的AUC?

问题描述

这是我的代码:

train <- data.frame(***contain label, feature group 1 and feature group 2***)

formula <- label ~ features group 1

ctrl <- trainControl(method = "repeatedcv",
                     number = 10,
                     repeats = 5,
                     summaryFunction = twoClassSummary,
                     classProbs = T)

fit <- train(formula,
             data = train, 
             method = "glm", 
             metric = "ROC",
             trControl = ctrl,
             na.action = na.omit)

pred <- predict(fit, train)

我的问题是:如何计算 AUC 的pred

我试过 prSummary、ROCR 和 pROC,没有用,当 obs 和 pred 都完全相同(水平方面)时,我似乎无法计算 AUC。

我想知道我是否可以使用 AUC 作为指标进行训练,我怎么不能显示 AUC?

ps

> levels(train$label)
[1] "classA" "classB"
> levels(as.factor(pred))
[1] "classA" "classB"

顺便说一句,我正在做的是:用插入符号拟合多个算法并按 AUC 对它们进行排名,然后我可以选择最佳算法(基于 AUC)。

*可重现的例子:

火车套装:鸢尾花

特征 g1:前 2 个特征

特征 g2:最后 2 个特征

种子:123*

标签: rr-caretrocauc

解决方案


这可能是可能的答案,但我不确定它是否正确,如果我错了,请告诉我。

response = as.factor(as.numeric(train$label))

predictor = as.vector(as.numeric(pred))

library(pROC)

result = as.numeric(roc(response, predictor)$auc)

顺便说一句,因为 pROC 运行速度很慢,任何人都可以帮我在 ROCR 包下转换它吗?多谢 :)


推荐阅读