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.

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

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

sns.heatmap(conf_matrix);

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 :

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
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

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

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.

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

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

sns.heatmap(conf_matrix);

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 :

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
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
some-alt