从R中的混淆矩阵中得到“准确度(平均值)”

时间:2016-04-20 21:24:59

标签: r r-caret confusion-matrix

我有以下困惑矩阵:

confusionMatrix(test_gbm)

Cross-Validated (60 fold) Confusion Matrix 

(entries are percentual average cell counts across resamples)

Prediction    A    B    C    D    E
Reference A 28.0  0.6  0.0  0.0  0.0
          B  0.3 18.3  0.6  0.1  0.2
          C  0.1  0.5 16.6  0.5  0.2
          D  0.0  0.0  0.2 15.7  0.2
          E  0.0  0.0  0.0  0.1 17.8

      Accuracy (average) : 0.9635

我想以编程方式提取出准确性。

这是str数据

List of 4
 $ table: table [1:5, 1:5] 27.9941 0.2905 0.1019 0.0408 0.0102 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ Prediction: chr [1:5] "A" "B" "C" "D" ...
  .. ..$ Reference : chr [1:5] "A" "B" "C" "D" ...
 $ norm : chr "overall"
 $ B    : int 60
 $ text : chr "Cross-Validated (60 fold) Confusion Matrix"
  - attr(*, "class")= chr [1:2] "confusionMatrix.train" "confusionMatrix.train.formula"

我似乎无法弄清楚它的存储位置。

1 个答案:

答案 0 :(得分:3)

在这种情况下,精度不存储在confusionMatrix对象中,但似乎是从混淆矩阵本身动态计算的。不过,您也可以自己计算精度,因为它只是混淆矩阵的对角元素的总和。

假设您将混淆矩阵存储在名为cm的对象中。然后准确度是:

sum(diag(cm$table))/100

或者,不存储混淆矩阵对象:

sum(diag(confusionMatrix(test_gbm)$table))/100