Comment créer une matrice de confusion en Python



La régression logistique est un type de régression que nous pouvons utiliser lorsque la variable de réponse est binaire.

Une façon courante d’évaluer la qualité d’un modèle de régression logistique consiste à créer une matrice de confusion , qui est un tableau 2 × 2 qui montre les valeurs prédites du modèle par rapport aux valeurs réelles de l’ensemble de données de test.

Pour créer une matrice de confusion pour un modèle de régression logistique en Python, nous pouvons utiliser la fonction confusion_matrix() du package sklearn :

from sklearn import metrics
metrics.confusion_matrix(y_actual, y_predicted)

L’exemple suivant montre comment utiliser cette fonction pour créer une matrice de confusion pour un modèle de régression logistique en Python.

Exemple : création d’une matrice de confusion en Python

Supposons que nous disposions des deux tableaux suivants contenant les valeurs réelles d’une variable de réponse ainsi que les valeurs prédites par un modèle de régression logistique :

#define array of actual values
y_actual = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

#define array of predicted values
y_predicted = [0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]

Nous pouvons utiliser la fonction confusion_matrix() de sklearn pour créer une matrice de confusion pour ces données :

from sklearn import metrics

#create confusion matrix
c_matrix = metrics.confusion_matrix(y_actual, y_predicted)

#print confusion matrix
print(c_matrix)

[[6 4]
 [2 8]]

Si nous le souhaitons, nous pouvons utiliser la fonction crosstab() de pandas pour créer une matrice de confusion plus attrayante visuellement :

import pandas as pd

y_actual = pd.Series(y_actual, name='Actual')
y_predicted = pd.Series(y_predicted, name='Predicted')

#create confusion matrix
print(pd.crosstab(y_actual, y_predicted))

Predicted  0  1
Actual         
0          6  4
1          2  8

Les colonnes affichent les valeurs prédites pour la variable de réponse et les lignes affichent les valeurs réelles.

Nous pouvons également calculer l’exactitude, la précision et le rappel à l’aide des fonctions du package sklearn :

#print accuracy of model
print(metrics.accuracy_score(y_actual, y_predicted))

0.7

#print precision value of model
print(metrics.precision_score(y_actual, y_predicted))

0.667

#print recall value of model
print(metrics.recall_score(y_actual, y_predicted))

0.8

Voici un bref rappel sur l’exactitude, la précision et le rappel :

  • Précision : Pourcentage de prédictions correctes
  • Précision : Corriger les prédictions positives par rapport au total des prédictions positives
  • Rappel : Corriger les prédictions positives par rapport au total des positifs réels

Et voici comment chacune de ces métriques a été réellement calculée dans notre exemple :

  • Précision : (6+8) / (6+4+2+8) = 0,7
  • Précision : 8 / (8+4) = 0.667
  • Rappel : 8 / (2+8) = 0,8

Ressources additionnelles

Introduction à la régression logistique
Les 3 types de régression logistique
Régression logistique vs régression linéaire

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *