confusion_matrix#

sklearn.metrics.confusion_matrix(y_true,y_pred,*,labels=None,sample_weight=None,normalize=None)[source]#

Compute confusion matrix to evaluate the accuracy of a classification.

By definition a confusion matrix\(C\) is such that\(C_{i, j}\)is equal to the number of observations known to be in group\(i\) andpredicted to be in group\(j\).

Thus in binary classification, the count of true negatives is\(C_{0,0}\), false negatives is\(C_{1,0}\), true positives is\(C_{1,1}\) and false positives is\(C_{0,1}\).

Read more in theUser Guide.

Parameters:
y_truearray-like of shape (n_samples,)

Ground truth (correct) target values.

y_predarray-like of shape (n_samples,)

Estimated targets as returned by a classifier.

labelsarray-like of shape (n_classes), default=None

List of labels to index the matrix. This may be used to reorderor select a subset of labels.IfNone is given, those that appear at least onceiny_true ory_pred are used in sorted order.

sample_weightarray-like of shape (n_samples,), default=None

Sample weights.

Added in version 0.18.

normalize{‘true’, ‘pred’, ‘all’}, default=None

Normalizes confusion matrix over the true (rows), predicted (columns)conditions or all the population. If None, confusion matrix will not benormalized.

Returns:
Cndarray of shape (n_classes, n_classes)

Confusion matrix whose i-th row and j-thcolumn entry indicates the number ofsamples with true label being i-th classand predicted label being j-th class.

See also

ConfusionMatrixDisplay.from_estimator

Plot the confusion matrix given an estimator, the data, and the label.

ConfusionMatrixDisplay.from_predictions

Plot the confusion matrix given the true and predicted labels.

ConfusionMatrixDisplay

Confusion Matrix visualization.

References

[1]

Wikipedia entry for the Confusion matrix(Wikipedia and other references may use a differentconvention for axes).

Examples

>>>fromsklearn.metricsimportconfusion_matrix>>>y_true=[2,0,2,2,0,1]>>>y_pred=[0,0,2,2,0,2]>>>confusion_matrix(y_true,y_pred)array([[2, 0, 0],       [0, 0, 1],       [1, 0, 2]])
>>>y_true=["cat","ant","cat","cat","ant","bird"]>>>y_pred=["ant","ant","cat","cat","ant","cat"]>>>confusion_matrix(y_true,y_pred,labels=["ant","bird","cat"])array([[2, 0, 0],       [0, 0, 1],       [1, 0, 2]])

In the binary case, we can extract true positives, etc. as follows:

>>>tn,fp,fn,tp=confusion_matrix([0,1,0,1],[1,1,1,0]).ravel().tolist()>>>(tn,fp,fn,tp)(0, 2, 1, 1)

Gallery examples#

Visualizations with Display Objects

Visualizations with Display Objects

Post-tuning the decision threshold for cost-sensitive learning

Post-tuning the decision threshold for cost-sensitive learning

Release Highlights for scikit-learn 1.5

Release Highlights for scikit-learn 1.5

Label Propagation digits: Active learning

Label Propagation digits: Active learning