Visualisieren Sie die Verwirrungsmatrix mit dem Caret-Paket in R
-
Verwenden Sie die Funktion
confusionMatrix, um eine Konfusionsmatrix in R . zu erstellen -
Verwenden Sie die Funktion
fourfoldplot, um die Konfusionsmatrix in R . zu visualisieren -
Verwenden Sie die Funktion
autoplot, um die Verwirrungsmatrix in R . zu visualisieren
Dieser Artikel zeigt mehrere Methoden zur Visualisierung einer Konfusionsmatrix mit dem Paket caret in R.
Verwenden Sie die Funktion confusionMatrix, um eine Konfusionsmatrix in R . zu erstellen
Die Funktion confusionMatrix ist Bestandteil des Pakets caret und kann aus den Faktoren oder Tabellendatentypen eine Konfusionsmatrix erstellen. Beachten Sie, dass wir zwei Zufallsfaktoren mit den Funktionen sample und rep konstruieren. confusionMatrix nimmt als erstes Argument den Faktor der vorhergesagten Klassen und als zweites den Faktor der als wahre Ergebnisse zu verwendenden Klassen.
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
Verwenden Sie die Funktion fourfoldplot, um die Konfusionsmatrix in R . zu visualisieren
Die Funktion confusionMatrix gibt die Textdaten aus, aber wir können den Teil davon mit Hilfe der Funktion fourfoldplot visualisieren. fourfoldplot konstruiert einen vierfachen Graphen mit zwei mal zwei mal k Kontingenztabelle. Die Kontingenztabelle sollte in Arrayform oder als 2x2-Matrix übergeben werden, wenn k gleich 1 ist. Beachten Sie, dass das folgende Beispiel die Verwendung von fourfoldplot mit den hartcodierten Tabellendaten demonstriert.
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")

Andererseits können wir confusionMatrix als Objekt speichern und das Element table daraus an den fourfoldplot übergeben, um die Konfusionsmatrix zu visualisieren.
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")

Verwenden Sie die Funktion autoplot, um die Verwirrungsmatrix in R . zu visualisieren
Alternativ können wir die Funktion autoplot aus dem Paket ggplot2 verwenden, um die Konfusionsmatrix anzuzeigen. In diesem Fall konstruieren wir die Matrix mit der Funktion conf_mat, die ein Objekt der Klasse conf_mat erzeugt, das direkt als erstes Argument an die Funktion autoplot übergeben werden kann. Letzterer bestimmt automatisch, einen entsprechenden Graphen für das Objekt zu zeichnen.
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