Konfusionsmatrix
Bei einer Vorhersage für ein binäres Klassifikationsproblem gibt es nur vier mögliche Ergebnisse:
Im obigen Bild sind die tatsächlichen Werte (wahre Labels) von oben nach unten in absteigender Reihenfolge angeordnet, während die vorhergesagten Werte von links nach rechts in aufsteigender Reihenfolge dargestellt werden. Dies ist das Standardlayout, das von scikit-learn beim Anzeigen von Konfusionsmatrizen verwendet wird.
Verschiedene Bibliotheken oder Visualisierungen können eine andere Anordnung verwenden – zum Beispiel die tatsächlichen Werte auf der x-Achse und die vorhergesagten Werte auf der y-Achse platzieren. Der einzige Unterschied besteht jedoch im Layout; die Werte in der Matrix bleiben gleich.
Diese Ergebnisse werden als True Positive (TP), True Negative (TN), False Positive (FP) und False Negative (FN) bezeichnet. "True" oder "False" gibt an, ob die Vorhersage korrekt ist, während sich "Positive" oder "Negative" darauf bezieht, ob die vorhergesagte Klasse 1 oder 0 ist.
Das bedeutet, es gibt zwei Arten von Fehlern, die auftreten können: False Positives und False Negatives. Eine False-Positive-Vorhersage wird auch als Fehler 1. Art bezeichnet, während eine False-Negative-Vorhersage als Fehler 2. Art bezeichnet wird.
Konfusionsmatrix
Die erste Möglichkeit, die Leistung des Modells zu betrachten, besteht darin, die Vorhersagen in einer Konfusionsmatrix wie folgt zu organisieren:
Eine Konfusionsmatrix kann in Python mit der Funktion confusion_matrix() aus sklearn erstellt werden:
from sklearn.metrics import confusion_matrix
conf_matrix = confusion_matrix(y_true, y_pred)
Für eine bessere Visualisierung kann die Funktion heatmap() aus seaborn verwendet werden:
sns.heatmap(conf_matrix)
Hier ist ein Beispiel, wie die Konfusionsmatrix für eine Random-Forest-Vorhersage auf dem Titanic-Datensatz berechnet wird:
12345678910111213141516import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);
Es ist auch möglich, anstelle der Instanzanzahlen die Prozentsätze darzustellen, indem der Parameter normalize verwendet wird:
conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain what each value in the confusion matrix represents?
What is the difference between a false positive and a false negative?
How do I interpret the normalized confusion matrix?
Awesome!
Completion rate improved to 4.17
Konfusionsmatrix
Swipe um das Menü anzuzeigen
Bei einer Vorhersage für ein binäres Klassifikationsproblem gibt es nur vier mögliche Ergebnisse:
Im obigen Bild sind die tatsächlichen Werte (wahre Labels) von oben nach unten in absteigender Reihenfolge angeordnet, während die vorhergesagten Werte von links nach rechts in aufsteigender Reihenfolge dargestellt werden. Dies ist das Standardlayout, das von scikit-learn beim Anzeigen von Konfusionsmatrizen verwendet wird.
Verschiedene Bibliotheken oder Visualisierungen können eine andere Anordnung verwenden – zum Beispiel die tatsächlichen Werte auf der x-Achse und die vorhergesagten Werte auf der y-Achse platzieren. Der einzige Unterschied besteht jedoch im Layout; die Werte in der Matrix bleiben gleich.
Diese Ergebnisse werden als True Positive (TP), True Negative (TN), False Positive (FP) und False Negative (FN) bezeichnet. "True" oder "False" gibt an, ob die Vorhersage korrekt ist, während sich "Positive" oder "Negative" darauf bezieht, ob die vorhergesagte Klasse 1 oder 0 ist.
Das bedeutet, es gibt zwei Arten von Fehlern, die auftreten können: False Positives und False Negatives. Eine False-Positive-Vorhersage wird auch als Fehler 1. Art bezeichnet, während eine False-Negative-Vorhersage als Fehler 2. Art bezeichnet wird.
Konfusionsmatrix
Die erste Möglichkeit, die Leistung des Modells zu betrachten, besteht darin, die Vorhersagen in einer Konfusionsmatrix wie folgt zu organisieren:
Eine Konfusionsmatrix kann in Python mit der Funktion confusion_matrix() aus sklearn erstellt werden:
from sklearn.metrics import confusion_matrix
conf_matrix = confusion_matrix(y_true, y_pred)
Für eine bessere Visualisierung kann die Funktion heatmap() aus seaborn verwendet werden:
sns.heatmap(conf_matrix)
Hier ist ein Beispiel, wie die Konfusionsmatrix für eine Random-Forest-Vorhersage auf dem Titanic-Datensatz berechnet wird:
12345678910111213141516import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);
Es ist auch möglich, anstelle der Instanzanzahlen die Prozentsätze darzustellen, indem der Parameter normalize verwendet wird:
conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
Danke für Ihr Feedback!