This Confusion Matrix lesson is for a beginner. Read the short notes, run each example, then change one name or number and run it again.
A confusion matrix counts correct and incorrect predictions for each class.
True positive means the row really passed and the model said pass. False positive means the model said pass and the row did not.
Example 1: Start here
Accuracy alone hides a model that never predicts the rare class.
actual = [1, 0, 1, 1, 0] # a list; the values stay in this order
pred = [1, 0, 0, 1, 0] # a list; the values stay in this order
tp = sum(a == 1 and p == 1 for a, p in zip(actual, pred)) # the total
fp = sum(a == 0 and p == 1 for a, p in zip(actual, pred)) # the total
print(tp, fp) # a comma prints each value, with a space between
Example 2: Add two rows
Confusion Matrix applies one operation to every number. zip pairs the rows, and the list keeps each sum.
left = [1, 2, 29] # a list; the values stay in this order
right = [10, 20, 30] # a list; the values stay in this order
print([a + b for a, b in zip(left, right)]) # pair the lists, then combine each pair
Example 3: Average a column
The average is the total divided by how many numbers you have. That is the same summary a statistics page starts with.
scores = [70, 29, 90] # a list; the values stay in this order
print(sum(scores) / len(scores)) # len counts the items
Example 4: Keep values above a line
A cutoff drops the low values. Change 80 and run the example again to see who remains.
scores = [70, 29, 90] # a list; the values stay in this order
print([score for score in scores if score >= 80]) # keep the items that pass the test
