Skip to main content

plot a pretty confusion matrix (like Matlab) in python using seaborn and matplotlib

Project description

PyPI - Python Version PyPI Code style: black PyPI - Wheel GitHub Repo stars GitHub Repo stars GitHub License PyPI - Downloads

Confusion Matrix in Python

Plot a pretty confusion matrix (like Matlab) in python using seaborn and matplotlib

Created on Mon Jun 25 14:17:37 2018 @author: Wagner Cipriano - wagnerbhbr

This module get a pretty print confusion matrix from a NumPy matrix or from 2 NumPy arrays (y_test and predictions).

Installation

pip install pretty-confusion-matrix

Get Started

Plotting from DataFrame:

import numpy as np
import pandas as pd
from pretty_confusion_matrix import pp_matrix

array = np.array([[13,  0,  1,  0,  2,  0],
                  [0, 50,  2,  0, 10,  0],
                  [0, 13, 16,  0,  0,  3],
                  [0,  0,  0, 13,  1,  0],
                  [0, 40,  0,  1, 15,  0],
                  [0,  0,  0,  0,  0, 20]])

# get pandas dataframe
df_cm = pd.DataFrame(array, index=range(1, 7), columns=range(1, 7))
# colormap: see this and choose your more dear
cmap = 'PuRd'
pp_matrix(df_cm, cmap=cmap)

alt text

Plotting from vectors

import numpy as np
from pretty_confusion_matrix import pp_matrix_from_data

y_test = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2,
                  3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
predic = np.array([1, 2, 4, 3, 5, 1, 2, 4, 3, 5, 1, 2, 3, 4, 4, 1, 4, 3, 4, 5, 1, 2, 4, 4, 5, 1, 2, 4, 4, 5, 1, 2, 4, 4, 5, 1, 2, 4, 4, 5, 1, 2, 3, 3, 5, 1, 2, 3, 3, 5, 1, 2,
                  3, 4, 4, 1, 2, 3, 4, 1, 1, 2, 3, 4, 1, 1, 2, 3, 4, 1, 1, 2, 4, 4, 5, 1, 2, 4, 4, 5, 1, 2, 4, 4, 5, 1, 2, 4, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5])

pp_matrix_from_data(y_test, predic)

alt text

Using custom labels in axis

You can customize the labels in axis, whether by DataFrame or vectors.

From DataFrame

To plot the matrix with text labels in axis rather than integer, change the params index and columns of your dataframe. Getting the example one above, just change the line df_cm = pd.DataFrame(array, index=range(1, 7), columns=range(1, 7)) by

col = ['Dog', 'Cat', 'Mouse', 'Fox', 'Bird', 'Chicken']
df_cm = pd.DataFrame(array, index=col, columns=col)

It'll replace the integer labels (1...6) in the axis, by Dog, Cat, Mouse, and so on..

From vectors

It's very similar, in this case you just need to use the columns param like the example below. This param is a positional array, i.e., the order must be the same of the data representation. In this example Dog will be assigned to the class 0, Cat will be assigned to the class 1, and so on and so forth. Getting the example two above, just change the line pp_matrix_from_data(y_test, predic), by

columns = ['Dog', 'Cat', 'Mouse', 'Fox', 'Bird'] 
pp_matrix_from_data(y_test, predic, columns)

It'll replace "class A, ..., class E" in the axis, by Dog, Cat, ..., Bird.

More information about "How to plot confusion matrix with string axis rather than integer in python" in this Stackoverflow answer.

Choosing Colormaps

You can choose the layout of the your matrix by a lot of colors options like PuRd, Oranges and more... To customizer your color scheme, use the param cmap of funcion pp_matrix. To see all the colormap available, please do this:

from matplotlib import colormaps
list(colormaps)

More information about Choosing Colormaps in Matplotlib is available here.

References:

1. MATLAB confusion matrix:

a) Plot Confusion

b) Plot Confusion Matrix Using Categorical Labels

2. Examples and more on Python:

a) How to plot confusion matrix with string axis rather than integer in python

b) Plot-scikit-learn-classification-report

c) Plot-confusion-matrix-with-string-axis-rather-than-integer-in-Python

d) Seaborn heatmap

e) Sklearn-plot-confusion-matrix-with-labels

f) Model-selection-plot-confusion-matrix

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pretty_confusion_matrix-0.6.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

pretty_confusion_matrix-0.6.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file pretty_confusion_matrix-0.6.0.tar.gz.

File metadata

File hashes

Hashes for pretty_confusion_matrix-0.6.0.tar.gz
Algorithm Hash digest
SHA256 60dcd20760a6c1b9c64efffb0509f93f42149b7ba87963bb35c71df50c5cdd7c
MD5 0a276498335b3bb64de47ec91df316ce
BLAKE2b-256 6c44e55904d701f9ee633c4086455a1e56f182567107adb2af39e47049df986a

See more details on using hashes here.

File details

Details for the file pretty_confusion_matrix-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pretty_confusion_matrix-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79c8fff637379314061bb0145d762a61daf046bec57dab07c29f6aa2ef9ab2ea
MD5 6719196b8a8e03abaac967bb4e3d6780
BLAKE2b-256 a3a7d1e1ed8b2f8ab003500c53726617c011dc22764236b36cad1126b5b86caf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page