--- title: Confusion Matrix emoji: 🤗 colorFrom: blue colorTo: red sdk: gradio sdk_version: 3.19.1 app_file: app.py pinned: false tags: - evaluate - metric description: >- The confusion matrix evaluates classification accuracy. Each row in a confusion matrix represents a true class and each column represents the instances in a predicted class. --- # Metric Card for Confusion Matrix ## Metric Description The confusion matrix evaluates classification accuracy. Each row in a confusion matrix represents a true class and each column represents the instances in a predicted class. Let's look at an example: | | setosa | versicolor | virginica | | ---------- | ------ | ---------- | --------- | | setosa | 13 | 0 | 0 | | versicolor | 0 | 10 | 6 | | virginica | 0 | 0 | 9 | What information does this confusion matrix provide? * All setosa instances were properly predicted as such (true positives). * The model always correctly classifies the setosa class (there are no false positives). * 10 versicolor instances were properly classified, but 6 instances were misclassified as virginica. * All virginica insances were properly classified as such. ## How to Use At minimum, this metric requires predictions and references as inputs. ```python >>> confusion_metric = evaluate.load("confusion_matrix") >>> results = confusion_metric.compute(references=[0, 1, 1, 2, 0, 2, 2], predictions=[0, 2, 1, 1, 0, 2, 0]) >>> print(results) {'confusion_matrix': [[2, 0, 0], [0, 1, 1], [1, 1, 1]]} ``` ### Inputs - **predictions** (`list` of `int`): Predicted labels. - **references** (`list` of `int`): Ground truth labels. - **labels** (`list` of `int`): List of labels to index the matrix. This may be used to reorder or select a subset of labels. - **sample_weight** (`list` of `float`): Sample weights. - **normalize** (`str`): Normalizes confusion matrix over the true (rows), predicted (columns) conditions or all the population. ### Output Values - **confusion_matrix**(`list` of `list` of `str`): Confusion matrix. Minimum possible value is 0. Maximum possible value is 1.0, or the number of examples input, if `normalize` is set to `True`. Output Example(s): ```python {'confusion_matrix': [[2, 0, 0], [0, 1, 1], [1, 1, 1]]} ``` This metric outputs a dictionary, containing the confusion matrix. ### Examples Example 1 - A simple example ```python >>> confusion_metric = evaluate.load("confusion_matrix") >>> results = confusion_metric.compute(references=[0, 1, 1, 2, 0, 2, 2], predictions=[0, 2, 1, 1, 0, 2, 0]) >>> print(results) {'confusion_matrix': [[2, 0, 0], [0, 1, 1], [1, 1, 1]]} ``` ## Citation(s) ```bibtex @article{scikit-learn, title={Scikit-learn: Machine Learning in {P}ython}, author={Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V. and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P. and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.}, journal={Journal of Machine Learning Research}, volume={12}, pages={2825--2830}, year={2011} } ``` ## Further References * https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html * https://en.wikipedia.org/wiki/Confusion_matrix