15

是否有任何工具/R 包可用于计算 R 中混淆矩阵的准确性和精度?

公式和数据结构在这里

4

4 回答 4

31

是的,您可以使用混淆矩阵计算 R 中的 Accuracy 和precision 。它使用Caret 包

这是示例:

lvs <- c("normal", "abnormal")
truth <- factor(rep(lvs, times = c(86, 258)),
                levels = rev(lvs))
pred <- factor(
               c(
                 rep(lvs, times = c(54, 32)),
                 rep(lvs, times = c(27, 231))),               
               levels = rev(lvs))

xtab <- table(pred, truth)
# load Caret package for computing Confusion matrix
library(caret) 
confusionMatrix(xtab)

xtab的混淆矩阵是这样的:

Confusion Matrix and Statistics

          truth
pred       abnormal normal
  abnormal      231     32
  normal         27     54

               Accuracy : 0.8285
                 95% CI : (0.7844, 0.8668)
    No Information Rate : 0.75
    P-Value [Acc > NIR] : 0.0003097

                  Kappa : 0.5336
 Mcnemar's Test P-Value : 0.6025370

            Sensitivity : 0.8953
            Specificity : 0.6279
         Pos Pred Value : 0.8783
         Neg Pred Value : 0.6667
             Prevalence : 0.7500
         Detection Rate : 0.6715
   Detection Prevalence : 0.7645

       'Positive' Class : abnormal

所以这里有你想要的一切。

于 2013-09-20T10:29:29.027 回答
14

@Harsh Trivedi

byClass允许您从摘要中提取精度召回率。PPV 是精确的。敏感性是回忆。https://en.wikipedia.org/wiki/Precision_and_recall

library(caret)

result <- confusionMatrix(prediction, truth)
precision <- result$byClass['Pos Pred Value']    
recall <- result$byClass['Sensitivity']

我想你想提取精度和召回率来计算f 度量,所以就这样吧。

f_measure <- 2 * ((precision * recall) / (precision + recall))

我还发现了这个方便的在线计算器进行健全性检查。 http://www.marcovanetti.com/pages/cfmatrix/?noc=2

-bg

于 2016-02-25T15:05:32.597 回答
0

如果有人遇到与我相同的问题,则该方法confusionMatrix()确实caret提供了敏感性/特异性。但是,如果它被输入一个类型的对象,train它将运行一个不同的方法,confusionMatrix.train()没有这个信息。

解决方案是从对象(即和分别)手动将data和提供给方法。referencetrain$pred$pred$$pred$obsconfusionMatrix()

于 2017-04-25T20:42:17.023 回答
0

万一其他人正在寻找:感谢上面 BGA 的回答,我对如何读取confusionMatrix()输出有了更清楚的了解,并意识到您可以直接从输出中获取 F 测量值result$ByClass作为 F1。

 result$byClass
         Sensitivity          Specificity       Pos Pred Value       Neg Pred Value 
           0.9337442            0.8130531            0.8776249            0.8952497 
           Precision               Recall                   F1           Prevalence 
           0.8776249            0.9337442            0.9048152            0.5894641 
      Detection Rate Detection Prevalence    Balanced Accuracy 
           0.5504087            0.6271571            0.8733987 

f_measure使用与上述评论相同的公式计算下面也给出 0.9048152。

您还可以从results$overall

result$overall
      Accuracy          Kappa  AccuracyLower  AccuracyUpper   AccuracyNull AccuracyPValue 
  8.841962e-01   7.573509e-01   8.743763e-01   8.935033e-01   5.894641e-01   0.000000e+00 
 McnemarPValue 
  2.745521e-13

或使用来自的平衡精度results

于 2019-05-10T20:47:32.893 回答