Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Confusiematrix | Modellen Vergelijken
Classificatie met Python

bookConfusiematrix

Bij het doen van een voorspelling voor een binaire classificatie zijn er slechts vier mogelijke uitkomsten:

In de bovenstaande afbeelding zijn de werkelijke waarden (ware labels) van boven naar beneden gerangschikt in aflopende volgorde, terwijl de voorspelde waarden van links naar rechts in oplopende volgorde zijn gerangschikt. Dit is de standaardindeling die door scikit-learn wordt gebruikt bij het weergeven van verwarringsmatrices.

Note
Opmerking

Verschillende bibliotheken of visualisaties kunnen een andere indeling gebruiken - bijvoorbeeld door de werkelijke waarden op de x-as en de voorspelde waarden op de y-as te plaatsen. Het enige verschil is echter de indeling; de waarden in de matrix blijven hetzelfde.

Deze uitkomsten worden aangeduid als true positive (TP), true negative (TN), false positive (FP) en false negative (FN). "true" of "false" geeft aan of de voorspelling correct is, terwijl "positive" of "negative" verwijst naar of de voorspelde klasse 1 of 0 is.

Dit betekent dat er twee soorten fouten mogelijk zijn: false positives en false negatives. Een false positive voorspelling staat ook bekend als een type 1 fout, terwijl een false negative voorspelling een type 2 fout wordt genoemd.

Confusiematrix

De eerste manier om naar de prestaties van het model te kijken is door de voorspellingen te ordenen in een confusiematrix zoals deze:

Je kunt een confusiematrix in Python opbouwen met de functie confusion_matrix() uit sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

Voor een betere visualisatie kun je de functie heatmap() uit seaborn gebruiken:

sns.heatmap(conf_matrix)

Hier is een voorbeeld van hoe de verwarringsmatrix te berekenen voor een Random Forest-voorspelling op de Titanic dataset:

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

Het is ook mogelijk om de percentages in plaats van de aantallen instanties te plotten door de parameter normalize te gebruiken:

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
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
question mark

Wat is het doel van een confusion matrix?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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

bookConfusiematrix

Veeg om het menu te tonen

Bij het doen van een voorspelling voor een binaire classificatie zijn er slechts vier mogelijke uitkomsten:

In de bovenstaande afbeelding zijn de werkelijke waarden (ware labels) van boven naar beneden gerangschikt in aflopende volgorde, terwijl de voorspelde waarden van links naar rechts in oplopende volgorde zijn gerangschikt. Dit is de standaardindeling die door scikit-learn wordt gebruikt bij het weergeven van verwarringsmatrices.

Note
Opmerking

Verschillende bibliotheken of visualisaties kunnen een andere indeling gebruiken - bijvoorbeeld door de werkelijke waarden op de x-as en de voorspelde waarden op de y-as te plaatsen. Het enige verschil is echter de indeling; de waarden in de matrix blijven hetzelfde.

Deze uitkomsten worden aangeduid als true positive (TP), true negative (TN), false positive (FP) en false negative (FN). "true" of "false" geeft aan of de voorspelling correct is, terwijl "positive" of "negative" verwijst naar of de voorspelde klasse 1 of 0 is.

Dit betekent dat er twee soorten fouten mogelijk zijn: false positives en false negatives. Een false positive voorspelling staat ook bekend als een type 1 fout, terwijl een false negative voorspelling een type 2 fout wordt genoemd.

Confusiematrix

De eerste manier om naar de prestaties van het model te kijken is door de voorspellingen te ordenen in een confusiematrix zoals deze:

Je kunt een confusiematrix in Python opbouwen met de functie confusion_matrix() uit sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

Voor een betere visualisatie kun je de functie heatmap() uit seaborn gebruiken:

sns.heatmap(conf_matrix)

Hier is een voorbeeld van hoe de verwarringsmatrix te berekenen voor een Random Forest-voorspelling op de Titanic dataset:

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

Het is ook mogelijk om de percentages in plaats van de aantallen instanties te plotten door de parameter normalize te gebruiken:

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
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
question mark

Wat is het doel van een confusion matrix?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 1
some-alt