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

Förväxlingsmatris

Svep för att visa menyn

Vid förutsägelse av ett binärt klassificeringsproblem finns det endast fyra möjliga utfall:

ConfusionMatrix

I bilden ovan är de faktiska värdena (sanna etiketter) ordnade uppifrån och ner i fallande ordning, medan de förutsagda 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
Observera

Olika bibliotek eller visualiseringar kan använda en annan ordning – till exempel att placera faktiska värden på x-axeln och predikterade 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 predikterade klassen är 1 eller 0.

Detta innebär att det finns två typer av fel vi kan göra: falska positiva och falska negativa. En falsk positiv förutsägelse kallas även för typ 1-fel, medan en falsk negativ förutsägelse kallas för typ 2-fel.

gravid

Konfusionsmatris

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

ConfusionMatrix1

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);

Vi kan även plotta procentandelar istället för antalet 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);
question mark

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

Vänligen välj det korrekta svaret

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

Avsnitt 5. Kapitel 1
some-alt