# Plotting the Model and its Predictions

Workshop Resources

Now that we are able to classify the category of an individual piece of clothing using our model, we will visualize these predictions by creating a bar plot for a specified image.

## Predicated Classification

The plot_image function displays an image along with its predicted classification, the confidence level of the model for that category, and the actual classification (which is for reference).

Copy the plot_image function into your Google Colab Notebook:

def plot_image(i, predictions_array, true_label, img):
true_label, img = true_label[i], img[i]
plt.grid(False)
plt.xticks([])
plt.yticks([])

plt.imshow(img, cmap=plt.cm.binary)

predicted_label = np.argmax(predictions_array)
if predicted_label == true_label:
color = 'blue'
else:
color = 'red'

plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
100*np.max(predictions_array),
class_names[true_label]),
color=color)


## Visualizing Confidence Values

The plot_value_array function plots the confidence values generated by the model as a bar graph.

The y-axis of the graph will display the confidence level, while the x-axis of the graph will represent the categorization of items (t-shirt/top, trouser, pullover, dress, coat, sandal, shirt, sneaker, bag, or ankle boot).

Copy the plot_value_array function into your Google Colab Notebook:

def plot_value_array(i, predictions_array, true_label):
true_label = true_label[i]
plt.grid(False)
plt.xticks(range(10))
plt.yticks([])
thisplot = plt.bar(range(10), predictions_array, color="#777777")
plt.ylim([0, 1])
predicted_label = np.argmax(predictions_array)

thisplot[predicted_label].set_color('red')
thisplot[true_label].set_color('blue')


## Using the Functions

We will use the following code to call on the functions we wrote previously. Copy the snippet into your Google Colab Notebook.

i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i],  test_labels)
plt.show()


We can see that our model predicts this item to be an ankle boot. How confident is the model in this prediction? 99% confident. The category in paranthesis is the correct categorization of the item. In this case, the model detected the item correctly.

Keep in mind that not all models are perfect. Models can get their predictions wrong as we will see in the next example.

We will use the same code as before, but test the confidence with a different item. Set i equal to a new value, like 12.

i = 12
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i],  test_labels)
plt.show()


From this example we see that the model predicted the item to be a sandal with 96% confidence. However, we see that the correct identification of the item is a sneaker. The plot shows that the model also predicted this item to be a sneaker with ~ 3% confidence or an ankle boot with ~ 1% confidence.

## More Examples

For more examples of the model predictions, plot the first 25 test images, their predicted labels, and the true labels. As before, the correct predictions will be shown in blue and the incorrect predictions in red.

num_rows = 5
num_cols = 5
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
plt.subplot(num_rows, 2*num_cols, 2*i+1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(num_rows, 2*num_cols, 2*i+2)
plot_value_array(i, predictions[i], test_labels)
plt.tight_layout()
plt.show()


What do you think about the model’s predictions? Would you be satisfied with this success rate?