# Introduction When conducting machine learning tasks, we need to evaluate the performance of the model at each iteration and at the end of training. How do we evaluate the performance of the model? In classification tasks, a common method is to create a confusion matrix. For example, in the task of classifying course titles, we can create the following confusion matrix based on the model's predictions and the actual values: | | Python | Java | C++ | Go | Linux | Docker | | ------ | ------ | ---- | --- | --- | ----- | ------ | | Python | 10 | 1 | 0 | 2 | 0 | 1 | | Java | 2 | 15 | 3 | 1 | 0 | 1 | | C++ | 0 | 0 | 9 | 4 | 1 | 3 | | Go | 0 | 3 | 1 | 12 | 0 | 1 | | Linux | 0 | 0 | 1 | 0 | 4 | 0 | | Docker | 0 | 1 | 1 | 0 | 0 | 3 | The row headers represent the true labels, and the column headers represent the predicted labels. The values in the table represent the classification results. The value in the $i$th row and $j$th column represents the number of times the predicted label $j$ is predicted as the true label $i$. Obviously, the diagonal represents the cases where the classification is correct. For example, the value in the 2nd row and 1st column represents that the model predicts 2 samples as Java, but the true label is Python. The sum of all the numbers in the matrix, `10+1+2+1+2+15+3+1+1+9+4+1+3+3+1+12+1+1+4+1+1+3=80`, indicates that the sample size is 80. Such a confusion matrix can quickly help us analyze the misclassification of each class and help us analyze and adjust the training process. In this challenge, we will be creating a confusion matrix based on the true values and the output values of a classification task. The confusion matrix will provide us with valuable information about the misclassification of each class and help us analyze and adjust the training process.
Click the virtual machine below to start practicing