Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Matrice de Confusion | Comparer les Modèles
Classification Avec Python
course content

Contenu du cours

Classification Avec Python

Classification Avec Python

1. Classificateur K-NN
2. Régression Logistique
3. Arbre de Décision
4. Forêt Aléatoire
5. Comparer les Modèles

book
Matrice de Confusion

Lorsque nous faisons une prédiction pour un problème de classification binaire, il n'y a que quatre résultats possibles.

Remarque

Dans l'image ci-dessus, les valeurs réelles sont en ordre décroissant, et les valeurs prédites sont en ordre croissant. C'est la disposition utilisée dans Scikit-learn pour la matrice de confusion (apprise plus tard dans le chapitre). Vous pouvez rencontrer différentes dispositions dans d'autres visualisations, mais rien à part l'ordre ne change.

Nous appelons ces résultats Vrai Positif (VP), Vrai Négatif (VN), Faux Positif (FP), Faux Négatif (FN), où Vrai/Faux indique si la prédiction est correcte et Positif/Négatif indique quelle est la classe prédite 1 ou 0.
Ainsi, nous pouvons faire deux types d'erreurs : Faux Positif et Faux Négatif.
Le cas d'une prédiction Faux Positif est également appelé une Erreur de Type 1.
Et le cas d'une prédiction Faux Négatif – Erreur de Type 2.

Matrice de Confusion

La première façon d'examiner la performance du modèle est d'organiser les prédictions dans une matrice de confusion comme ceci :

Vous pouvez construire une matrice de confusion en Python en utilisant confusion_matrix() de sklearn.

Et, pour une meilleure visualisation, vous pouvez utiliser la fonction heatmap() de sns(seaborn).

Voici un exemple de calcul de la matrice de confusion pour une prédiction de Random Forest sur le jeu de données Titanic :

12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);
copy

Nous pouvons également tracer les pourcentages au lieu du nombre d'instances en utilisant le paramètre normalize :

12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
copy

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 1
We're sorry to hear that something went wrong. What happened?
some-alt