Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Konfusionsmatrix | Modelle Vergleichen
Klassifikation mit Python
course content

Kursinhalt

Klassifikation mit Python

Klassifikation mit Python

1. K-NN Klassifikator
2. Logistische Regression
3. Entscheidungsbaum
4. Random Forest
5. Modelle Vergleichen

book
Konfusionsmatrix

Wenn wir eine Vorhersage für ein binäres Klassifikationsproblem machen, gibt es nur vier mögliche Ergebnisse.

Hinweis

In dem obigen Bild sind die tatsächlichen Werte in absteigender Reihenfolge und die vorhergesagten Werte in aufsteigender Reihenfolge. Dies ist das Layout, das in Scikit-learn für die Konfusionsmatrix verwendet wird (später im Kapitel gelernt). Sie können in anderen Visualisierungen auf unterschiedliche Layouts stoßen, aber abgesehen von der Reihenfolge ändert sich nichts.

Wir nennen diese Ergebnisse True Positive(TP), True Negative(TN), False Positive(FP), False Negative(FN), wobei True/False dafür steht, ob die Vorhersage korrekt ist, und Positive/Negative dafür steht, was die vorhergesagte Klasse 1 oder 0 ist.
So können wir zwei Arten von Fehlern machen: False Positive und False Negative.
Der Fall einer False Positive-Vorhersage wird auch als Fehler 1. Art bezeichnet.
Und der Fall einer False Negative-Vorhersage – Fehler 2. Art.

Konfusionsmatrix

Der erste Weg, die Leistung des Modells zu betrachten, besteht darin, die Vorhersagen in einer Konfusionsmatrix wie dieser zu organisieren:

Sie können eine Konfusionsmatrix in Python mit confusion_matrix() aus sklearn erstellen.

Und für eine bessere Visualisierung können Sie die heatmap()-Funktion von sns (seaborn) verwenden.

Hier ist ein Beispiel für die Berechnung der Konfusionsmatrix für eine Random-Forest-Vorhersage auf dem Titanic-Datensatz:

12345678910111213141516
import 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);
copy

Wir können auch die Prozentsätze anstelle der Instanzenanzahl mit dem normalize-Parameter plotten:

12345678910111213141516
import 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);
copy

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 1
We're sorry to hear that something went wrong. What happened?
some-alt