Forvirringsmatrix
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.
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:
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å visualisere procentdele i stedet for antallet af forekomster ved at bruge 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);
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Forvirringsmatrix
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.
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:
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å visualisere procentdele i stedet for antallet af forekomster ved at bruge 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);
Tak for dine kommentarer!