Skip to content Skip to sidebar Skip to footer

Plot Confusion Matrix With Scikit-learn Without A Classifier

I have a confusion matrix created with sklearn.metrics.confusion_matrix. Now, I would like to plot it with sklearn.metrics.plot_confusion_matrix, but the first parameter is the tra

Solution 1:

The fact that you can import plot_confusion_matrix directly suggests that you have the latest version of scikit-learn (0.22) installed. So you can just look at the source code of plot_confusion_matrix() to see how its using the estimator.

From the latest sources here, the estimator is used for:

  1. computing confusion matrix using confusion_matrix
  2. getting the labels (unique values of y which correspond to 0,1,2.. in the confusion matrix)

So if you have those two things already, you just need the below part:

import matplotlib.pyplot as plt
from sklearn.metrics import ConfusionMatrixDisplay

disp = ConfusionMatrixDisplay(confusion_matrix=cm,
                              display_labels=display_labels)


# NOTE: Fill all variables here with default values of the plot_confusion_matrix
disp = disp.plot(include_values=include_values,
                 cmap=cmap, ax=ax, xticks_rotation=xticks_rotation)

plt.show()

Do look at the NOTE in comment.

For older versions, you can look at how the matplotlib part is coded here

Solution 2:

The below code is to create confusion matrix from true values and predicted values. If you have already created the confusion matrix you can just run the last line below.

import seaborn as sns
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_true, y_pred)
f = sns.heatmap(cm, annot=True, fmt='d')

Solution 3:

You could use a one-line "identity classifier" if that fits your use case.

IC = type('IdentityClassifier', (), {"predict": lambda i : i, "_estimator_type": "classifier"})
plot_confusion_matrix(IC, y_pred, y_test, normalize='true', values_format='.2%');

( see my original answer in: plot_confusion_matrix without estimator )

Post a Comment for "Plot Confusion Matrix With Scikit-learn Without A Classifier"