A confusion matrix helps us see how well a model is doing by showing where it gets things right and where it makes mistakes.
Confusion matrix in ML Python
from sklearn.metrics import confusion_matrix cm = confusion_matrix(true_labels, predicted_labels)
true_labels are the actual correct answers.
predicted_labels are what the model guessed.
from sklearn.metrics import confusion_matrix true_labels = [0, 1, 0, 1] predicted_labels = [0, 0, 0, 1] cm = confusion_matrix(true_labels, predicted_labels) print(cm)
labels for clarity.from sklearn.metrics import confusion_matrix true_labels = ['cat', 'dog', 'cat', 'dog'] predicted_labels = ['dog', 'dog', 'cat', 'cat'] cm = confusion_matrix(true_labels, predicted_labels, labels=['cat', 'dog']) print(cm)
This program compares true labels and predicted labels for a binary classification. It prints the confusion matrix showing counts of correct and incorrect predictions.
from sklearn.metrics import confusion_matrix # Actual labels true_labels = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0] # Model predictions predicted_labels = [1, 0, 0, 1, 0, 1, 1, 0, 1, 0] # Calculate confusion matrix cm = confusion_matrix(true_labels, predicted_labels) print("Confusion Matrix:") print(cm)
The confusion matrix rows represent actual classes, and columns represent predicted classes.
Diagonal values show correct predictions; off-diagonal values show mistakes.
It works for any number of classes, not just two.
A confusion matrix shows how many times a model guessed each class correctly or incorrectly.
It helps understand model errors clearly.
Use it to improve and compare classification models.
Practice
What does a confusion matrix primarily show in machine learning?
Solution
Step 1: Understand the purpose of a confusion matrix
A confusion matrix shows how many times a model predicted each class correctly or incorrectly.Step 2: Identify what it displays
It displays counts of true positives, true negatives, false positives, and false negatives for each class.Final Answer:
The number of correct and incorrect predictions for each class -> Option AQuick Check:
Confusion matrix = correct and incorrect counts [OK]
- Thinking it shows training speed
- Confusing it with dataset size
- Assuming it shows feature count
Which of the following is the correct way to represent a confusion matrix for a binary classifier?
[[TP, FP],
[FN, TN]]Solution
Step 1: Recall confusion matrix layout for binary classification
The standard layout is: first row has true Positives (TP) and false Positives (FP), second row has false Negatives (FN) and true Negatives (TN).Step 2: Match the given matrix to the layout
The given matrix [[TP, FP], [FN, TN]] matches the standard layout exactly.Final Answer:
true Positives, false Positives in first row; false Negatives, true Negatives in second row -> Option AQuick Check:
Binary confusion matrix = [[TP, FP], [FN, TN]] [OK]
- Swapping rows and columns
- Confusing FP with FN positions
- Mixing up TP and TN placement
Given the confusion matrix for a 3-class classifier:
[[5, 2, 0],
[1, 7, 1],
[0, 2, 6]]What is the total number of correct predictions?
Solution
Step 1: Identify correct predictions in confusion matrix
Correct predictions are on the diagonal: 5 (class 1), 7 (class 2), and 6 (class 3).Step 2: Sum the diagonal values
5 + 7 + 6 = 18 correct predictions in total.Final Answer:
18 -> Option DQuick Check:
Sum diagonal = 18 correct predictions [OK]
- Summing all matrix elements instead of diagonal
- Adding off-diagonal values by mistake
- Ignoring one of the diagonal values
Consider this confusion matrix for a binary classifier:
[[50, 10],
[5, 35]]There is a mistake in interpreting the false Positives (FP). Which is the correct FP count?
Solution
Step 1: Recall FP position in confusion matrix
In a binary confusion matrix [[TP, FP], [FN, TN]], FP is at position [0][1].Step 2: Identify FP value in given matrix
Value at [0][1] is 10, so FP = 10.Final Answer:
10 -> Option CQuick Check:
FP = matrix[0][1] = 10 [OK]
- Confusing FP with FN
- Taking FP as bottom-left value
- Mixing FP with TN or TP
A model's confusion matrix for a 3-class problem is:
[[40, 5, 0],
[3, 30, 7],
[0, 2, 38]]Calculate the overall accuracy of the model.
Solution
Step 1: Calculate total correct predictions
Sum diagonal: 40 + 30 + 38 = 108 correct predictions.Step 2: Calculate total predictions
Sum all elements: (40+5+0) + (3+30+7) + (0+2+38) = 45 + 40 + 40 = 125 total predictions.Step 3: Compute accuracy
Accuracy = correct / total = 108 / 125 = 0.864, rounded to 0.86.Final Answer:
0.86 -> Option BQuick Check:
Accuracy = 108/125 ≈ 0.86 [OK]
- Using only one class's correct count
- Forgetting to sum all matrix elements
- Rounding incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
