Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forvirringsmatrix | Sammenligning af Modeller
Klassifikation med Python

Forvirringsmatrix

Stryg for at vise menuen

Ved forudsigelse af et binært klassifikationsproblem er der kun fire mulige udfald:

ConfusionMatrix

På billedet ovenfor er de faktiske værdier (sande etiketter) ordnet fra top til bund i faldende rækkefølge, mens de forudsagte værdier er ordnet fra venstre mod højre i stigende rækkefølge. Dette er standardlayoutet, der bruges af scikit-learn ved visning af confusion matrices.

Note
Bemærk

Forskellige biblioteker eller visualiseringer kan bruge en anden opstilling – for eksempel ved at placere faktiske værdier på x-aksen og forudsagte værdier på y-aksen. Forskellen er dog kun layoutet; værdierne i matricen forbliver de samme.

Disse udfald kaldes true positive (TP), true negative (TN), false positive (FP) og false negative (FN). "true" eller "false" angiver, om forudsigelsen er korrekt, mens "positive" eller "negative" refererer til, om den forudsagte klasse er 1 eller 0.

Dette betyder, at der er to typer fejl, vi kan lave: falske positiver og falske negativer. En falsk positiv forudsigelse kaldes også en type 1-fejl, mens en falsk negativ forudsigelse kaldes en type 2-fejl.

gravid

Forvirringsmatrix

Den første måde at vurdere modellens ydeevne på er at organisere forudsigelserne i en forvirringsmatrix som denne:

Forvirringsmatrix1

Du kan oprette en forvirringsmatrix i Python ved at bruge funktionen confusion_matrix() fra sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

For bedre visualisering kan du bruge funktionen heatmap() fra seaborn:

sns.heatmap(conf_matrix)

Her er et eksempel på, hvordan man beregner en forvekslingsmatrix for en Random Forest-forudsigelse på Titanic-datasættet:

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);

Det er også muligt at vise procentdele i stedet for antal forekomster ved at bruge parameteren normalize:

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);
question mark

Hvad er formålet med en forvekslingsmatrix?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 5. Kapitel 1
some-alt