来自插入符R中的平均类概率的AUC

时间:2017-05-28 14:05:01

标签: r r-caret auc

我希望在使用T(columnA)包进行交叉验证后,从我的二元分类器中获取曲线下面积(AUC)。

对于标准混淆矩阵,我使用caret中的average参数。

示例:

caret::confusionMatrix

然后混淆矩阵用于精确度,F1等。

controls = trainControl(method="repeatedcv"
                    , number=5
                    , repeats=10
                    , selectionFunction = "oneSE"
                    , classProbs = T
                    , summaryFunction = twoClassSummary
)

svm_5k = train(veracity ~ .
           , data = training_data
           , method = "svmLinear"
           , trControl = controls
           , verbose = FALSE
           , metric = 'ROC'
)

现在我与AUC斗争:我现在正在检索类probs并将它们作为列附加到测试数据,如confmat = caret::confusionMatrix(svm_5k , 'average')

如果我然后使用testing_data$prob = predict(svm_5k, testing_data, type='prob')[,2]包来获得类似

的AUC

pROC ...

...我没有使用roc(response = testing_data$veracity, predictor = testing_data$prob)中指示的交叉验证,而只是分类器的快照。

有没有办法使用CV中的平均概率来获得AUC?

2 个答案:

答案 0 :(得分:0)

尝试

auc <- auc(roc)
sens <- roc$sensitivities[2]
spec <- roc$specificities[2]

现在你可以获得你需要的所有东西,如灵敏度,特殊性和曲线下的区域。

&

答案 1 :(得分:0)

我遇到了相同的问题,您想要的内容存储在svm_5k$pred下的模型中。

要绘制AUC,您可以执行以下操作:

library(ggplot2)
library(plotROC)
ggplot(svm_5k$pred, 
       aes(m = M, d = factor(obs, levels = c("R", "M")))) + 
    geom_roc(hjust = -0.4, vjust = 1.5) + coord_equal()

其中M是一个值取决于svm_5k$pred下的模型。 “ R”和“ M”只是标签。

因此,在我的情况下,m = Yeslevels = c("Yes", "No")。像这样