<jupyter_start><jupyter_text>Confusion matrixExample of confusion matrix usage to evaluate the qualityof the output of a classifier on the iris data set. Thediagonal elements represent the number of points for whichthe predicted label is equal to the true label, whileoff-diagonal elements are those that are mislabeled by theclassifier. The higher the diagonal values of the confusionmatrix the better, indicating many correct predictions.The figures show the confusion matrix with and withoutnormalization by class support size (number of elementsin each class). This kind of normalization can beinteresting in case of class imbalance to have a morevisual interpretation of which class is being misclassified.Here the results are not as good as they could be as ourchoice for the regularization parameter C was not the best.In real life applications this parameter is usually chosenusing `grid_search`.<jupyter_code>print(__doc__)

import numpy as np
import matplotlib.pyplot as plt

from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import ConfusionMatrixDisplay

# import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names

# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

# Run classifier, using a model that is too regularized (C too low) to see
# the impact on the results
classifier = svm.SVC(kernel='linear', C=0.01).fit(X_train, y_train)

np.set_printoptions(precision=2)

# Plot non-normalized confusion matrix
titles_options = [("Confusion matrix, without normalization", None),
                  ("Normalized confusion matrix", 'true')]
for title, normalize in titles_options:
    disp = ConfusionMatrixDisplay.from_estimator(
        classifier, X_test, y_test, display_labels=class_names,
        cmap=plt.cm.Blues, normalize=normalize
    )
    disp.ax_.set_title(title)

    print(title)
    print(disp.confusion_matrix)

plt.show()<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup