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