Visualize a matriz de confusão usando o pacote Caret em R
-
Use a função
confusedMatrix
para criar um array de confusão em R -
Use a função
fourfoldplot
para visualizar a matriz de confusão em R -
Use a função
autoplot
para visualizar a matriz de confusão em R
Este artigo irá demonstrar vários métodos de visualização de um array de confusão usando o pacote caret
em R.
Use a função confusedMatrix
para criar um array de confusão em R
A função confusedMatrix
é parte do pacote caret
e pode criar um array de confusão a partir dos fatores ou tipos de dados da tabela. Observe que construímos dois fatores aleatórios usando as funções sample
e rep
. ConfusedMatrix
leva o fator de classes previstas como o primeiro argumento e o fator de classes a ser usado como resultados verdadeiros como o 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
Use a função fourfoldplot
para visualizar a matriz de confusão em R
A função confusedMatrix
produz os dados textuais, mas podemos visualizar a parte deles com a ajuda da função fourfoldplot
. fourfoldplot
constrói um gráfico quádruplo com uma tabela de contingência dois por dois por k
. A tabela de contingência deve ser passada em forma de array ou como um array 2x2 se k
for igual a 1
. Observe que o exemplo a seguir demonstra o uso de fourfoldplot
com os dados da tabela embutidos em código.
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")
Por outro lado, podemos armazenar confusedMatrix
como um objeto e passar o membro table
dele para o fourfoldplot
para visualizar a matriz de confusão.
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")
Use a função autoplot
para visualizar a matriz de confusão em R
Alternativamente, podemos utilizar a função autoplot
do pacote ggplot2
para exibir a matriz de confusão. Neste caso, construímos a matriz com a função conf_mat
que produz um objeto da classe conf_mat
que pode ser passado diretamente como o primeiro argumento para a função autoplot
. Este último determina automaticamente o desenho de um gráfico correspondente para o 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")
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