A classification report helps us see how well our model is doing by showing simple numbers about its guesses.
Classification reports in TensorFlow
from sklearn.metrics import classification_report report = classification_report(true_labels, predicted_labels) print(report)
You need to have the true labels and the predicted labels from your model.
This function is from the sklearn library, which works well with TensorFlow outputs.
from sklearn.metrics import classification_report true_labels = [0, 1, 2, 2, 1] predicted_labels = [0, 2, 2, 2, 1] print(classification_report(true_labels, predicted_labels))
from sklearn.metrics import classification_report true_labels = [0, 1, 1, 0] predicted_labels = [0, 0, 1, 0] print(classification_report(true_labels, predicted_labels, target_names=['Cat', 'Dog']))
This program trains a tiny model on a small dataset, predicts the classes, and prints a classification report showing precision, recall, and f1-score for each class.
import tensorflow as tf from sklearn.metrics import classification_report import numpy as np # Create a simple dataset x_train = np.array([[0., 0.], [1., 1.], [0., 1.], [1., 0.]]) y_train = np.array([0, 1, 1, 0]) # Build a simple model model = tf.keras.Sequential([ tf.keras.layers.Dense(2, activation='softmax', input_shape=(2,)) ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Train the model model.fit(x_train, y_train, epochs=10, verbose=0) # Predict classes pred_probs = model.predict(x_train) pred_labels = np.argmax(pred_probs, axis=1) # Print classification report report = classification_report(y_train, pred_labels, target_names=['Class 0', 'Class 1']) print(report)
The classification report shows precision, recall, f1-score, and support for each class.
Precision means how many selected items are relevant, recall means how many relevant items are selected.
F1-score balances precision and recall into one number.
Classification reports give a clear summary of model performance on each class.
They help find which classes the model predicts well or poorly.
Use them after predictions to understand your model better.
Practice
Solution
Step 1: Understand classification report contents
A classification report summarizes key metrics like precision, recall, and F1-score for each class predicted by the model.Step 2: Identify what is NOT included
Training time, model layers, and input size are not part of the classification report.Final Answer:
Precision, recall, and F1-score for each class -> Option AQuick Check:
Classification report = precision, recall, F1-score [OK]
- Confusing training time with performance metrics
- Thinking model architecture details are in the report
- Assuming input data size is shown
Solution
Step 1: Recall the source of classification_report
The classification_report function is part of scikit-learn, not TensorFlow directly.Step 2: Check import syntax correctness
from sklearn.metrics import classification_report uses correct Python import syntax from sklearn.metrics. Other options are invalid or incorrect.Final Answer:
from sklearn.metrics import classification_report -> Option CQuick Check:
Import classification_report from sklearn.metrics [OK]
- Trying to import classification_report directly from tensorflow
- Using incorrect import syntax
- Confusing TensorFlow metrics with sklearn metrics
from sklearn.metrics import classification_report true_labels = [0, 1, 0, 1] pred_labels = [0, 0, 0, 1] print(classification_report(true_labels, pred_labels))
Solution
Step 1: Understand input labels and predictions
Labels are valid integers representing two classes: 0 and 1. Predictions have one mistake at index 1.Step 2: What classification_report prints
The function prints precision, recall, F1-score, and support for each class, not just accuracy or errors.Final Answer:
A report showing precision, recall, and F1-score for classes 0 and 1 -> Option BQuick Check:
classification_report outputs metrics per class [OK]
- Expecting an error due to integer labels
- Thinking only accuracy is printed
- Assuming no output if predictions differ
from sklearn.metrics import classification_report true = [1, 0, 1] pred = [1, 0] print(classification_report(true, pred))
Solution
Step 1: Check input list lengths
True labels list has 3 elements, predicted labels list has 2 elements. They must be the same length.Step 2: Verify other code parts
Import and print syntax are correct. Labels can be integers.Final Answer:
The true and pred lists have different lengths -> Option DQuick Check:
Input lists must match in length [OK]
- Ignoring length mismatch
- Thinking labels must be strings
- Assuming import or print is wrong
precision recall f1-score support
cat 0.90 0.95 0.92 100
dog 0.70 0.60 0.65 100
rabbit 0.50 0.40 0.44 100
accuracy 0.68 300
macro avg 0.70 0.65 0.67 300
weighted avg 0.70 0.68 0.68 300
What should you focus on to improve your model?Solution
Step 1: Analyze class-wise metrics
Rabbit class has the lowest precision (0.50), recall (0.40), and F1-score (0.44), indicating poor performance.Step 2: Decide improvement focus
Improving rabbit predictions will raise overall accuracy and balance. Increasing support or ignoring classes is not helpful.Final Answer:
Improve the model's performance on the rabbit class -> Option AQuick Check:
Lowest metrics class needs improvement [OK]
- Trying to increase support instead of improving metrics
- Ignoring poorly performing classes
- Reducing classes without reason
Ready to prove it?
Pass the test and this pattern moves unknown
