Visualizza la matrice di confusione utilizzando il pacchetto Caret in R

Jinku Hu 16 luglio 2021
  1. Usa la funzione confusionMatrix per creare una matrice di confusione in R
  2. Usa la funzione fourfoldplot per visualizzare la matrice di confusione in R
  3. Usa la funzione autoplot per visualizzare la matrice di confusione in R
Visualizza la matrice di confusione utilizzando il pacchetto Caret in R

Questo articolo dimostrerà diversi metodi per visualizzare una matrice di confusione utilizzando il pacchetto caret in R.

Usa la funzione confusionMatrix per creare una matrice di confusione in R

La funzione confusionMatrix fa parte del pacchetto caret e può creare una matrice di confusione dai fattori o dai tipi di dati della tabella. Nota che costruiamo due fattori casuali usando le funzioni sample e rep. confusionMatrix prende il fattore delle classi previste come primo argomento e il fattore delle classi da utilizzare come risultati veri come secondo.

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

Usa la funzione fourfoldplot per visualizzare la matrice di confusione in R

La funzione confusionMatrix emette i dati testuali, ma possiamo visualizzarne una parte con l’aiuto della funzione fourfoldplot. fourfoldplot costruisce un grafico quadruplo con due a due per k tabella di contingenza. La tabella di contingenza dovrebbe essere passata sotto forma di array o come matrice 2x2 se k è uguale a 1. Si noti che l’esempio seguente mostra l’utilizzo di fourfoldplot con i dati della tabella hardcoded.

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")

visualizza la matrice di confusione 1

D’altra parte, possiamo memorizzare confusionMatrix come oggetto e passare il membro table da esso al fourfoldplot per visualizzare la matrice di confusione.

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")

visualizza la matrice di confusione 2

Usa la funzione autoplot per visualizzare la matrice di confusione in R

In alternativa, possiamo utilizzare la funzione autoplot del pacchetto ggplot2 per visualizzare la matrice di confusione. In questo caso, costruiamo la matrice con la funzione conf_mat che produce un oggetto della classe conf_mat che può essere passato direttamente come primo argomento alla funzione autoplot. Quest’ultimo determina automaticamente di disegnare un grafico corrispondente per l’oggetto.

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")

visualizza la matrice di confusione 3

Autore: 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

Articolo correlato - R Matrix