如何从R中的confusionMatrix中检索整体精度值



在R插入符号库中,如果我得到如下所示的混淆矩阵,如果有办法检索整体精度0.992?我无法取出这个值,因为我需要存储这个值并将其用于以后的处理。这可能吗?

 Prediction    A    B    C    D    E
          A 1114    2    0    0    0
          B    9  745    5    0    0
          C    0    6  674    4    0
          D    0    0    3  640    0
          E    0    0    2    1  718

整体统计数据

            Accuracy : 0.992         
              95% CI : (0.989, 0.994)
 No Information Rate : 0.286         
 P-Value [Acc > NIR] : <2e-16        
               Kappa : 0.99          

Mcnemar检验p值:NA

分类统计:

                     Class: A Class: B Class: C Class: D Class: E
 Sensitivity             0.992    0.989    0.985    0.992    1.000
 Specificity             0.999    0.996    0.997    0.999    0.999
 Pos Pred Value          0.998    0.982    0.985    0.995    0.996
 Neg Pred Value          0.997    0.997    0.997    0.998    1.000
 Prevalence              0.286    0.192    0.174    0.164    0.183
 Detection Rate          0.284    0.190    0.172    0.163    0.183
 Detection Prevalence    0.284    0.193    0.174    0.164    0.184
 Balanced Accuracy       0.996    0.992    0.991    0.996    1.000

给定混淆矩阵cm,总体精度由overall.accuracy <- cm$overall['Accuracy']

获得。

这是我第一次看到caret包,我是怎么知道的?

由于您没有提供示例,所以我搜索了插入符号混淆矩阵的示例代码。下面是(我只在最后一条语句中添加了赋值):

###################
## 3 class example
confusionMatrix(iris$Species, sample(iris$Species))
newPrior <- c(.05, .8, .15)
names(newPrior) <- levels(iris$Species)
cm <- confusionMatrix(iris$Species, sample(iris$Species))

现在,让我们看看混淆矩阵中有什么:

> str(cm)
List of 5
 $ positive: NULL
 $ table   : 'table' int [1:3, 1:3] 13 18 19 20 13 17 17 19 14
  ..- attr(*, "dimnames")=List of 2
  .. ..$ Prediction: chr [1:3] "setosa" "versicolor" "virginica"
  .. ..$ Reference : chr [1:3] "setosa" "versicolor" "virginica"
 $ overall : Named num [1:7] 0.267 -0.1 0.198 0.345 0.333 ...
  ..- attr(*, "names")= chr [1:7] "Accuracy" "Kappa" "AccuracyLower" "AccuracyUpper" ...
 $ byClass : num [1:3, 1:8] 0.26 0.26 0.28 0.63 0.63 0.64 0.26 0.26 0.28 0.63 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:3] "Class: setosa" "Class: versicolor" "Class: virginica"
  .. ..$ : chr [1:8] "Sensitivity" "Specificity" "Pos Pred Value" "Neg Pred Value" ...
 $ dots    : list()
 - attr(*, "class")= chr "confusionMatrix"

可以看到,cm对象是一个列表。我们看到各种"按类"one_answers"总体"统计。整体部分通过:

overall <- cm$overall

给出一个带有字符串下标的数字向量:

> overall
      Accuracy          Kappa  AccuracyLower  AccuracyUpper   AccuracyNull AccuracyPValue  McnemarPValue 
     0.2666667     -0.1000000      0.1978421      0.3449492      0.3333333      0.9674672      0.9547790 

现在,提取相关值非常简单,如:

> overall.accuracy <- overall['Accuracy'] 

总结:str是你的朋友。另一个有用的函数是attributes——它返回给定对象的所有属性。

最新更新