caret::confusionMatrix(x) does not output the Statistics by Class (in case x is a train object)

Viewed 36

In this example (from https://rdrr.io/cran/caret/man/confusionMatrix.train.html)

data(iris)
TrainData <- iris[,1:4]
TrainClasses <- iris[,5]

knnFit <- train(TrainData, TrainClasses,
                method = "knn",
                preProcess = c("center", "scale"),
                tuneLength = 10,
                trControl = trainControl(method = "cv"))

confusionMatrix() does not output the Statistics by Class:

> confusionMatrix(knnFit, "average")
Cross-Validated (10 fold) Confusion Matrix 

(entries are average cell counts across resamples)
 
            Reference
Prediction   setosa versicolor virginica
  setosa        5.0        0.0       0.0
  versicolor    0.0        4.8       0.3
  virginica     0.0        0.2       4.7
                            
 Accuracy (average) : 0.9667

But I can do:

> confusionMatrix(confusionMatrix(knnFit,"average")$table)
Confusion Matrix and Statistics

            Reference
Prediction   setosa versicolor virginica
  setosa        5.0        0.0       0.0
  versicolor    0.0        4.8       0.3
  virginica     0.0        0.2       4.7

Overall Statistics
                                  
               Accuracy : 0.9667  
                 95% CI : (NA, NA)
    No Information Rate : NA      
    P-Value [Acc > NIR] : NA      
                                  
                  Kappa : 0.95    
                                  
 Mcnemar's Test P-Value : NA      

Statistics by Class:

                     Class: setosa Class: versicolor Class: virginica
Sensitivity                 1.0000            0.9600           0.9400
Specificity                 1.0000            0.9700           0.9800
Pos Pred Value              1.0000            0.9412           0.9592
Neg Pred Value              1.0000            0.9798           0.9703
Prevalence                  0.3333            0.3333           0.3333
Detection Rate              0.3333            0.3200           0.3133
Detection Prevalence        0.3333            0.3400           0.3267
Balanced Accuracy           1.0000            0.9650           0.9600

Is this a correct procedure? Why is not confusionMatrix() providing the complete output in the 1st case?

0 Answers
Related