Visualice el array de confusión con el paquete Caret en R

Jinku Hu 30 enero 2023
  1. Utilice la función confusionMatrix para crear un array de confusión en R
  2. Utilice la función cuadruplicado para visualizar el array de confusión en R
  3. Utilice la función autoplot para visualizar el array de confusión en R
Visualice el array de confusión con el paquete Caret en R

Este artículo demostrará varios métodos para visualizar un array de confusión utilizando el paquete caret en R.

Utilice la función confusionMatrix para crear un array de confusión en R

La función confusionMatrix es parte del paquete caret y puede crear un array de confusión a partir de los factores o tipos de datos de la tabla. Tenga en cuenta que construimos dos factores aleatorios utilizando las funciones sample y rep. confusionMatrix toma el factor de clases predichas como primer argumento y el factor de clases que se utilizarán como resultados verdaderos como el segundo.

library(caret)

confusionMatrix(
  factor(sample(rep(letters[1:4], 200), 50)),
  factor(sample(rep(letters[1:4], 200), 50)))  
Confusion Matrix and Statistics

          Reference
Prediction a b c d
         a 2 5 6 2
         b 3 2 4 2
         c 3 5 2 2
         d 5 1 2 4

Overall Statistics

               Accuracy : 0.2             
                 95% CI : (0.1003, 0.3372)
    No Information Rate : 0.28            
    P-Value [Acc > NIR] : 0.9260          

                  Kappa : -0.0672         

 Mcnemar's Test P-Value : 0.7795          

Statistics by Class:

                     Class: a Class: b Class: c Class: d
Sensitivity            0.1538   0.1538   0.1429   0.4000
Specificity            0.6486   0.7568   0.7222   0.8000
Pos Pred Value         0.1333   0.1818   0.1667   0.3333
Neg Pred Value         0.6857   0.7179   0.6842   0.8421
Prevalence             0.2600   0.2600   0.2800   0.2000
Detection Rate         0.0400   0.0400   0.0400   0.0800
Detection Prevalence   0.3000   0.2200   0.2400   0.2400
Balanced Accuracy      0.4012   0.4553   0.4325   0.6000

Utilice la función cuadruplicado para visualizar el array de confusión en R

La función confusionMatrix genera los datos textuales, pero podemos visualizar parte de ellos con la ayuda de la función fourfoldplot. fourfoldplot construye un gráfico cuádruple con una tabla de contingencia de dos por dos por k. La tabla de contingencia debe pasarse en forma de array o como un array de 2x2 si k es igual a 1. Tenga en cuenta que el siguiente ejemplo demuestra el uso de cuadrícula con los datos de la tabla codificados.

ctable <- as.table(matrix(c(42, 6, 8, 28), nrow = 2, byrow = TRUE))
fourfoldplot(ctable, color = c("cyan", "pink"),
             conf.level = 0, margin = 1, main = "Confusion Matrix")

visualizar el array de confusión 1

Por otro lado, podemos almacenar confusionMatrix como un objeto y pasar el miembro table de él al fourfoldplot para visualizar el array de confusión.

library(caret)

cmat <- confusionMatrix(
  factor(sample(rep(letters[1:2], 200), 50)),
  factor(sample(rep(letters[1:2], 200), 50)))  

fourfoldplot(cmat$table, color = c("cyan", "pink"),
             conf.level = 0, margin = 1, main = "Confusion Matrix")

visualizar el array de confusión 2

Utilice la función autoplot para visualizar el array de confusión en R

Alternativamente, podemos utilizar la función autoplot del paquete ggplot2 para mostrar el array de confusión. En este caso, construimos el array con la función conf_mat que produce un objeto de la clase conf_mat que se puede pasar directamente como primer argumento a la función autoplot. Este último determina automáticamente dibujar un gráfico correspondiente para el objeto.

library(yardstick)
library(ggplot2)

set.seed(123)
truth_predicted <- data.frame(
  obs = sample(0:1,100, replace = T),
  pred = sample(0:1,100, replace = T)
)
truth_predicted$obs <- as.factor(truth_predicted$obs)
truth_predicted$pred <- as.factor(truth_predicted$pred)

cm <- conf_mat(truth_predicted, obs, pred)

autoplot(cm, type = "heatmap") +
  scale_fill_gradient(low = "pink", high = "cyan")

visualizar el array de confusión 3

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - R Matrix