Confusion matrix in sklearn
You just confused the actual and predicted. Every row represents actual values of distinct elements in your array and columns represent predicted values of them. That is,


First row: There are 2 ants, and 2 samples are predicted as ant.
Seconds row: There are 1 bird and 1 sample is predicted as cat.
Third row: There are 3 cats, 1 sample is predicted as ant, 2 samples are predicted as cat.