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?