Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Förväxlingsmatris | Jämföra Modeller
Klassificering med Python

bookFörväxlingsmatris

Vid prediktion för ett binärt klassificeringsproblem finns det endast fyra möjliga utfall:

I bilden ovan är de faktiska värdena (sanna etiketter) ordnade uppifrån och ned i fallande ordning, medan de predicerade värdena är ordnade från vänster till höger i stigande ordning. Detta är standardlayouten som används av scikit-learn vid visning av förväxlingsmatriser.

Note
Notering

Olika bibliotek eller visualiseringar kan använda en annan ordning – till exempel placera faktiska värden på x-axeln och predicerade värden på y-axeln. Skillnaden är dock endast layouten; värdena i matrisen förblir desamma.

Dessa utfall kallas true positive (TP), true negative (TN), false positive (FP) och false negative (FN). "true" eller "false" anger om förutsägelsen är korrekt, medan "positive" eller "negative" avser om den förutsagda klassen är 1 eller 0.

Detta innebär att det finns två typer av fel vi kan göra: false positives och false negatives. En false positive-förutsägelse kallas även för typ 1-fel, medan en false negative-förutsägelse kallas för typ 2-fel.

Konfusionsmatris

Det första sättet att utvärdera modellens prestanda är att organisera förutsägelserna i en konfusionsmatris enligt följande:

Du kan skapa en konfusionsmatris i Python med funktionen confusion_matrix() från sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

För bättre visualisering kan du använda funktionen heatmap() från seaborn:

sns.heatmap(conf_matrix)

Här är ett exempel på hur man beräknar en förväxlingsmatris för en Random Forest-prediktion på Titanic-datasetet:

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 även visualisera procentandelar istället för antal instanser genom att använda parametern 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

Vad är syftet med en förväxlingsmatris?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 4.17

bookFörväxlingsmatris

Svep för att visa menyn

Vid prediktion för ett binärt klassificeringsproblem finns det endast fyra möjliga utfall:

I bilden ovan är de faktiska värdena (sanna etiketter) ordnade uppifrån och ned i fallande ordning, medan de predicerade värdena är ordnade från vänster till höger i stigande ordning. Detta är standardlayouten som används av scikit-learn vid visning av förväxlingsmatriser.

Note
Notering

Olika bibliotek eller visualiseringar kan använda en annan ordning – till exempel placera faktiska värden på x-axeln och predicerade värden på y-axeln. Skillnaden är dock endast layouten; värdena i matrisen förblir desamma.

Dessa utfall kallas true positive (TP), true negative (TN), false positive (FP) och false negative (FN). "true" eller "false" anger om förutsägelsen är korrekt, medan "positive" eller "negative" avser om den förutsagda klassen är 1 eller 0.

Detta innebär att det finns två typer av fel vi kan göra: false positives och false negatives. En false positive-förutsägelse kallas även för typ 1-fel, medan en false negative-förutsägelse kallas för typ 2-fel.

Konfusionsmatris

Det första sättet att utvärdera modellens prestanda är att organisera förutsägelserna i en konfusionsmatris enligt följande:

Du kan skapa en konfusionsmatris i Python med funktionen confusion_matrix() från sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

För bättre visualisering kan du använda funktionen heatmap() från seaborn:

sns.heatmap(conf_matrix)

Här är ett exempel på hur man beräknar en förväxlingsmatris för en Random Forest-prediktion på Titanic-datasetet:

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 även visualisera procentandelar istället för antal instanser genom att använda parametern 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

Vad är syftet med en förväxlingsmatris?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1
some-alt