Python Tutorial

Apprentissage automatique Python – Matrice de confusion


Sur cette page, Infodewi.com collabore avec
Académie des sciences des données de NYC
pour délivrer des contenus de formation numériques à nos étudiants.


Qu’est-ce qu’une matrice de confusion ?

Il s’agit d’un tableau utilisé dans les problèmes de classification pour déterminer où se sont produites les erreurs dans le modèle.

Les lignes représentent les classes réelles que les résultats auraient dû être. Alors que les colonnes représentent les prédictions que nous avons faites. En utilisant ce tableau, il est facile de voir quelles prédictions sont fausses.

Création d’une matrice de confusion

Des matrices de confusion peuvent être créées par des prédictions faites à partir d’une régression logistique.

Pour l’instant, nous allons générer des valeurs réelles et prédites en utilisant NumPy :

Ensuite, nous devrons générer les nombres pour les valeurs “réelles” et “prédites”.


actual = numpy.random.binomial(1, 0.9, size = 1000)
predicted = numpy.random.binomial(1, 0.9, size = 1000)

Afin de créer la matrice de confusion, nous devons importer des métriques à partir du module sklearn.


from sklearn import metrics

Une fois les métriques importées, nous pouvons utiliser la fonction de matrice de confusion sur nos valeurs réelles et prédites.


confusion_matrix = metrics.confusion_matrix(actual, predicted)

Pour créer un affichage visuel plus interprétable, nous devons convertir le tableau en un affichage matriciel de confusion.


cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])

Visualiser l’affichage nécessite d’importer pyplot depuis matplotlib.


import matplotlib.pyplot as plt

Enfin pour afficher le tracé nous pouvons utiliser les fonctions plot() et show() de pyplot.


cm_display.plot()
plt.show()

Voir l’exemple entier en action :

Exemple

importer matplotlib.pyplot en tant que plt
importer numpy
à partir des métriques d’importation sklearn

réel = numpy.random.binomial(1,.9,taille = 1000)
prédit = numpy.random.binomial(1,.9,taille = 1000)

confusion_matrix = metrics.confusion_matrix(réel, prédit)

cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])

cm_display.plot()
plt.show()

Résultat

Exemple d’exécution »

Résultats expliqués

La matrice de confusion créée comporte quatre quadrants différents :

Vrai négatif (quadrant supérieur gauche)
Faux positif (quadrant supérieur droit)
Faux négatif (quadrant inférieur gauche)
Vrai positif (quadrant inférieur droit)

True signifie que les valeurs ont été prédites avec précision, False signifie qu’il y a eu une erreur ou une mauvaise prédiction.

Maintenant que nous avons créé une matrice de confusion, nous pouvons calculer différentes mesures pour quantifier la qualité du modèle. Tout d’abord, regardons la précision.


PUBLICITÉ


Métriques créées

La matrice nous fournit de nombreuses mesures utiles qui nous aident à évaluer notre modèle de classification.

Les différentes mesures comprennent : l’exactitude, la précision, la sensibilité (rappel), la spécificité et le score F, expliqués ci-dessous.


Précision

La précision mesure la fréquence à laquelle le modèle est correct.

Comment calculer

(Vrai positif + Vrai négatif) / Prédictions totales

Exemple

Précision = metrics.accuracy_score(réel, prédit)

Exemple d’exécution »


Précision

Parmi les positifs prédits, quel pourcentage est vraiment positif ?

Comment calculer

Vrai positif / (vrai positif + faux positif)

La précision n’évalue pas les cas négatifs correctement prédits :

Exemple

Précision = metrics.precision_score(réel, prédit)

Exemple d’exécution »


Sensibilité (Rappel)

Parmi tous les cas positifs, quel pourcentage sont prédits positifs ?

La sensibilité (parfois appelée rappel) mesure la capacité du modèle à prédire les positifs.

Cela signifie qu’il examine les vrais positifs et les faux négatifs (qui sont des positifs qui ont été incorrectement prédits comme négatifs).

Comment calculer

Vrai positif / (vrai positif + faux négatif)

La sensibilité permet de comprendre dans quelle mesure le modèle prédit que quelque chose est positif :

Exemple

Sensitivity_recall = metrics.recall_score (réel, prédit)

Exemple d’exécution »


Spécificité

Dans quelle mesure le modèle prédit-il des résultats négatifs ?

La spécificité est similaire à la sensibilité, mais la considère du point de vue des résultats négatifs.

Comment calculer

Vrai négatif / (vrai négatif + faux positif)

Comme c’est juste l’opposé de Recall, nous utilisons la fonction rappel_score, en prenant l’étiquette de position opposée :

Exemple

Spécificité = metrics.recall_score(réel, prédit, pos_label=0)

Exemple d’exécution »


Note F

Le score F est la “moyenne harmonique” de la précision et de la sensibilité.

Il prend en compte à la fois les cas de faux positifs et de faux négatifs et convient aux ensembles de données déséquilibrés.

Comment calculer

2 * ((Précision * Sensibilité) / (Précision + Sensibilité))

Ce score ne prend pas en compte les valeurs True Negative :

Tous les calculs en un :

Exemple

#métrique
print({“Accuracy”:Accuracy,”Precision”:Precision,”Sensitivity_recall”:Sensitivity_recall,”Specificity”:Specificity,”F1_score”:F1_score})

Exemple d’exécution »


#Apprentissage #automatique #Python #Matrice #confusion

Related Articles

Back to top button