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

bookForvirringsmatrise

Ved prediksjon for et binært klassifiseringsproblem finnes det kun fire mulige utfall:

I bildet ovenfor er de faktiske verdiene (sanne etiketter) ordnet fra topp til bunn i synkende rekkefølge, mens de predikerte verdiene er ordnet fra venstre til høyre i stigende rekkefølge. Dette er standardoppsettet som brukes av scikit-learn ved visning av forvirringsmatriser.

Note
Merk

Ulike biblioteker eller visualiseringer kan bruke en annen plassering – for eksempel ved å plassere faktiske verdier på x-aksen og predikerte verdier på y-aksen. Den eneste forskjellen er imidlertid oppsettet; verdiene i matrisen forblir de samme.

Disse utfallene kalles true positive (TP), true negative (TN), false positive (FP) og false negative (FN). "true" eller "false" indikerer om prediksjonen er korrekt, mens "positive" eller "negative" refererer til om den predikerte klassen er 1 eller 0.

Dette betyr at det finnes to typer feil vi kan gjøre: falske positiver og falske negativer. En falsk positiv prediksjon kalles også en type 1-feil, mens en falsk negativ prediksjon omtales som en type 2-feil.

Forvirringsmatrise

Den første måten å vurdere modellens ytelse på er å organisere prediksjonene i en forvirringsmatrise slik som dette:

Du kan lage en forvirringsmatrise i Python ved å bruke funksjonen confusion_matrix() fra sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

For bedre visualisering kan du bruke funksjonen heatmap() fra seaborn:

sns.heatmap(conf_matrix)

Her er et eksempel på hvordan man kan beregne en forvirringsmatrise for en Random Forest-prediksjon på Titanic-datasettet:

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å vise prosentandeler i stedet for antall forekomster ved å bruke 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

Hva er formålet med en forvirringsmatrise?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookForvirringsmatrise

Sveip for å vise menyen

Ved prediksjon for et binært klassifiseringsproblem finnes det kun fire mulige utfall:

I bildet ovenfor er de faktiske verdiene (sanne etiketter) ordnet fra topp til bunn i synkende rekkefølge, mens de predikerte verdiene er ordnet fra venstre til høyre i stigende rekkefølge. Dette er standardoppsettet som brukes av scikit-learn ved visning av forvirringsmatriser.

Note
Merk

Ulike biblioteker eller visualiseringer kan bruke en annen plassering – for eksempel ved å plassere faktiske verdier på x-aksen og predikerte verdier på y-aksen. Den eneste forskjellen er imidlertid oppsettet; verdiene i matrisen forblir de samme.

Disse utfallene kalles true positive (TP), true negative (TN), false positive (FP) og false negative (FN). "true" eller "false" indikerer om prediksjonen er korrekt, mens "positive" eller "negative" refererer til om den predikerte klassen er 1 eller 0.

Dette betyr at det finnes to typer feil vi kan gjøre: falske positiver og falske negativer. En falsk positiv prediksjon kalles også en type 1-feil, mens en falsk negativ prediksjon omtales som en type 2-feil.

Forvirringsmatrise

Den første måten å vurdere modellens ytelse på er å organisere prediksjonene i en forvirringsmatrise slik som dette:

Du kan lage en forvirringsmatrise i Python ved å bruke funksjonen confusion_matrix() fra sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

For bedre visualisering kan du bruke funksjonen heatmap() fra seaborn:

sns.heatmap(conf_matrix)

Her er et eksempel på hvordan man kan beregne en forvirringsmatrise for en Random Forest-prediksjon på Titanic-datasettet:

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å vise prosentandeler i stedet for antall forekomster ved å bruke 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

Hva er formålet med en forvirringsmatrise?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1
some-alt