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

bookForvirringsmatrix

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

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 anvendes af scikit-learn ved visning af forvekslingsmatricer.

Note
Bemærk

Forskellige biblioteker eller visualiseringer kan anvende 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 begå: 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.

Forvirringsmatrix

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

Du kan opbygge en forvirringsmatrix i Python ved hjælp af 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);
copy

Vi kan også visualisere procentdele i stedet for antallet af 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);
copy
question mark

Hvad er formålet med en forvekslingsmatrix?

Select the correct answer

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

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

bookForvirringsmatrix

Stryg for at vise menuen

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

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 anvendes af scikit-learn ved visning af forvekslingsmatricer.

Note
Bemærk

Forskellige biblioteker eller visualiseringer kan anvende 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 begå: 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.

Forvirringsmatrix

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

Du kan opbygge en forvirringsmatrix i Python ved hjælp af 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);
copy

Vi kan også visualisere procentdele i stedet for antallet af 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);
copy
question mark

Hvad er formålet med en forvekslingsmatrix?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 1
some-alt