Visualiser la matrice de confusion à l'aide du package Caret dans R
-
Utilisez la fonction
confusionMatrix
pour créer une matrice de confusion dans R -
Utilisez la fonction
fourfoldplot
pour visualiser la matrice de confusion dans R -
Utilisez la fonction
autoplot
pour visualiser la matrice de confusion dans R
Cet article démontrera plusieurs méthodes de visualisation d’une matrice de confusion en utilisant le package caret
dans R.
Utilisez la fonction confusionMatrix
pour créer une matrice de confusion dans R
La fonction confusionMatrix
fait partie du package caret
et peut créer une matrice de confusion à partir des facteurs ou des types de données de table. Notez que nous construisons deux facteurs aléatoires à l’aide des fonctions sample
et rep
. confusionMatrix
prend le facteur des classes prédites comme premier argument et le facteur des classes à utiliser comme vrais résultats comme second.
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
Utilisez la fonction fourfoldplot
pour visualiser la matrice de confusion dans R
La fonction confusionMatrix
sort les données textuelles, mais on peut en visualiser une partie à l’aide de la fonction fourfoldplot
. fourfoldplot
construit un graphique quadruple avec un tableau de contingence deux par deux par k
. Le tableau de contingence doit être transmis sous forme de tableau ou sous forme de matrice 2x2 si k
est égal à 1
. Notez que l’exemple suivant montre l’utilisation de fourfoldplot
avec les données de table codées en dur.
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")
D’un autre côté, nous pouvons stocker confusionMatrix
en tant qu’objet et passer le membre table
de celui-ci au fourfoldplot
pour visualiser la matrice de confusion.
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")
Utilisez la fonction autoplot
pour visualiser la matrice de confusion dans R
Alternativement, nous pouvons utiliser la fonction autoplot
du package ggplot2
pour afficher la matrice de confusion. Dans ce cas, nous construisons la matrice avec la fonction conf_mat
qui produit un objet de la classe conf_mat
qui peut être directement passé en premier argument à la fonction autoplot
. Ce dernier décide automatiquement de tracer un graphe correspondant pour l’objet.
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