Comment créer et tracer une matrice de confusion (crosstab) à partir de deux colonnes d'une dataframe avec pandas ?


Un exemple de comment créer et tracer une matrice de confusion (crosstab) à partir de deux colonnes d'une dataframe avec pandas en python:

Créer une dataframe

Soit la dataframe suivante

import pandas as pd

data = {'prediction':['a','a','a','b','b','b','c','c','c'], 
        'actual':['a','a','b','b','b','b','b','c','c']}


df = pd.DataFrame(data)

print(df)

donne

  prediction actual
0          a      a
1          a      a
2          a      b
3          b      b
4          b      b
5          b      b
6          c      b
7          c      c
8          c      c

Créer une matrice de confusion

Pour créer une matrice de confusion en utilisant les colonnes 'prediction' et 'actual' on peut utiliser la fonction pandas crosstab comme ceci:

contingency_matrix = pd.crosstab(df['prediction'], df['actual'])

print(contingency_matrix)

donne

actual      a  b  c
prediction         
a           2  1  0
b           0  3  0
c           0  1  2

Tracer une matrice de confusion

Pour tracer une matrice de confusion on peut ensuite utiliser par exemple matplotlib

import matplotlib.pyplot as plt
import seaborn as sn

plt.clf()

ax = fig.add_subplot(111)

ax.set_aspect(1)

res = sn.heatmap(contingency_matrix.T, annot=True, fmt='.2f', cmap="YlGnBu", cbar=False)

plt.savefig("crosstab_pandas.png", bbox_inches='tight', dpi=100)

plt.show()

donne

Comment créer et tracer une matrice de confusion (crosstab) à partir de deux colonnes d'une dataframe avec pandas ?

Références

Image

of