**ConfusionMatrixDisplay** is a SciKit function which is used to plot confusion matrix data. Where, confusion matrix is used to evaluate the output of a classifier on iris dataset.

This confusion matrix is divided into two segments – Diagonal blocks and other blocks.

Diagonal blocks represents the count of successful predictions i.e. the actual value is equals to the predicted value.

Other blocks represents the failed predictions count.

So, it is important that Diagonal blocks should have as higher value as possible for best results.

## ConfusionMatrixDisplay

The basic syntax of `ConfusionMatrixDisplay`

is –

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay ConfusionMatrixDisplay(confusion_matrix, *, display_labels=None)

It is part of `metrics`

module of `sklearn`

package.

Check out this code example –

import numpy as np from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix import matplotlib.pyplot as plt labels = [1,3,6,9,10,14,2,4] cm = confusion_matrix(labels, labels) cmp = ConfusionMatrixDisplay(cm, display_labels=labels) fig, ax = plt.subplots(figsize=(10,10)) cmp.plot(ax=ax)

In this code we used a simple 1d array and passed it as both true data and predicted data into confusion_matrix function.

Since both the true data and predicted data are same, so the final output will have diagonal matrix with highest value.

After that, we passed the output of `confusion_matrix`

to `confusionMatrixDisplay`

and plot it.

Check out the output –

### How to read ConfusionMatrixDisplay?

You will have two matrixes – Actual data matrix & Predicted data matrix.

Suppose there are three different types of data in those matrixes. For example – `ironman`

, `hulk`

, `thor`

.

Let actual matrix is –

actual = ["ironman", "hulk", "thor", "hulk", "hulk", "thor", "ironman"]

and predicted matrix is –

predicted = ["ironman", "hulk", "thor", "thor", "ironman", "thor", "hulk"]

You can see that not all predicted values are same as actual. So, we will definitely have some values in non-diagonal places of confusion matrix.

To understand clearly, let’s put both matrixes together –

actual = ["ironman", "hulk", "thor", "hulk", "hulk", "thor", "ironman"] predicted = ["ironman", "hulk", "thor", "thor", "ironman", "thor", "hulk"]

Now we will draw a zero matrix board of 3×3. Because we have 3 distinct values in actual and predicted arrays.

______ ______ ______ Ironman | 0 | 0 | 0 | |______|______|______| Hulk | 0 | 0 | 0 | |______|______|______| Thor | 0 | 0 | 0 | |______|______|______| Ironman Hulk Thor The vertical is actual Horizontal is predicted

We will pick the first value, i.e. `ironman`

. Add 1 to the corresponding blocks. If predicted array has `hulk`

in place of `ironman`

, then we will add 1 to (0,1) block.

actual = ["ironman", "..", "..", "..", "..", "..", "ironman"] predicted = ["ironman", "..", "..", "..", "..", "..", "hulk"] ______ ______ ______ Ironman | 0+1 | 0+1 | 0 | |______|______|______| Hulk | 0 | 0 | 0 | |______|______|______| Thor | 0 | 0 | 0 | |______|______|______| Ironman Hulk Thor

Similarly for `hulk`

–

actual = ["..", "hulk", "..", "hulk", "hulk", "..", ".."] predicted = ["..", "hulk", "..", "thor", "ironman", "..", ".."] ______ ______ ______ Ironman | 0 | 0 | 0 | |______|______|______| Hulk | 0+1 | 0+1 | 0+1 | |______|______|______| Thor | 0 | 0 | 0 | |______|______|______| Ironman Hulk Thor

Now for `thor`

–

actual = ["..", "..", "thor", "..", "..", "thor", ".."] predicted = ["..", "..", "thor", "..", "..", "thor", ".."] ______ ______ ______ Ironman | 0 | 0 | 0 | |______|______|______| Hulk | 0 | 0 | 0 | |______|______|______| Thor | 0 | 0 |0+1+1 | |______|______|______| Ironman Hulk Thor

Let’s combine all three results –

actual = ["ironman", "hulk", "thor", "hulk", "hulk", "thor", "ironman"] predicted = ["ironman", "hulk", "thor", "thor", "ironman", "thor", "hulk"] ______ ______ ______ Ironman | 1 | 1 | 0 | |______|______|______| Hulk | 1 | 1 | 1 | |______|______|______| Thor | 0 | 0 | 2 | |______|______|______| Ironman Hulk Thor

Finally we got the confusion matrix. You can see that the prediction for `thor`

is completely right because only the diagonal value is greater than 0.

## Conclusion

In this article we learned about `confusionmatrixdisplay`

function. It is used to plot the data of confusion matrix. We also discussed about how this matrix is created from actual and predicted data.