Forvirringsmatrise
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.
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:
12345678910111213141516import 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);
Vi kan også vise prosentandeler i stedet for antall forekomster ved å bruke parameteren normalize:
conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516import 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);
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Forvirringsmatrise
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.
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:
12345678910111213141516import 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);
Vi kan også vise prosentandeler i stedet for antall forekomster ved å bruke parameteren normalize:
conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516import 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);
Takk for tilbakemeldingene dine!