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