0% ont trouvé ce document utile (0 vote)
6 vues5 pages

Classification KNN et Arbres de Décision

Ce document présente un TP sur les algorithmes de classification KNN et les arbres de décision dans le cadre d'un cours de machine learning. Les objectifs incluent la compréhension de la standardisation des données pour KNN et l'interprétation des règles de décision pour les arbres. Deux exercices pratiques sont fournis : la classification de téléphones mobiles par gamme de prix et la prédiction de l'attrition client dans une entreprise de télécommunications.

Transféré par

saad.lakzit16
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues5 pages

Classification KNN et Arbres de Décision

Ce document présente un TP sur les algorithmes de classification KNN et les arbres de décision dans le cadre d'un cours de machine learning. Les objectifs incluent la compréhension de la standardisation des données pour KNN et l'interprétation des règles de décision pour les arbres. Deux exercices pratiques sont fournis : la classification de téléphones mobiles par gamme de prix et la prédiction de l'attrition client dans une entreprise de télécommunications.

Transféré par

saad.lakzit16
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Mohammed Ier Cours : Machine Learning

École Nationale de TP N°: 4


l’Intelligence Artificielle et Filière : IA, GINF, ROC, IRSI
du Digital, Berkane Pr. BOUTAHIR Mohamed
A.U : 2025–2026 Khalifa

TP 4 : Algorithmes de Classification (KNN & Arbres de


Décision)
Objectifs Pédagogiques

- KNN (K-Nearest Neighbors) : Comprendre l’importance de la mise à l’échelle


des données et l’impact du paramètre K.

- Arbres de Décision : Apprendre à interpréter des règles de décision explicites


(”Si... Alors...”) et gérer des variables catégorielles.

- Interprétation : Savoir lire une matrice de confusion multiclasse et visualiser un


arbre.

1 Exercice 1 : K-Nearest Neighbors (KNN)


Objectif : Classification de téléphones mobiles par gamme de prix.

1.1 Présentation du Problème


Le KNN est un algorithme basé sur la proximité. Pour classer un nouveau téléphone, l’algo-
rithme regarde les K téléphones les plus similaires (voisins) dans l’espace des caractéristiques
(RAM, batterie, etc.).

Visualisation du KNN

Figure 1: Principe de vote majoritaire des voisins les plus proches.

1
Dataset : ”Mobile Price Classification”
Lien : [Link]
Tâche : Prédire la variable price range (0, 1, 2, 3) en fonction des caractéristiques techniques.

1.2 Préparation et Standardisation


Consignes d’importation :

1. Importez pandas, numpy, [Link] et seaborn.

2. Chargez le fichier [Link] dans un DataFrame nommé df.

3. Séparez les variables explicatives (X) de la variable cible (y = ’price range’).

Étape critique : La Standardisation


En KNN, la distance est reine. La variable ram (jusqu’à 4000 Mo) est 1000 fois plus grande que
n cores (1 à 8). Sans mise à l’échelle, la RAM écrasera toutes les autres variables dans le calcul
de distance.

Question 1.1

Pourquoi est-il crucial de standardiser les données AVANT de les diviser en Train/Test
ou APRÈS ? (Réfléchissez à la ”fuite de données” ou data leakage).

Code d’aide pour la standardisation :


1 from sklearn . preprocessing import StandardScaler
2 from sklearn . model_selection import train_test_split
3
4 # Normalisation ( Moyenne =0 , Variance =1)
5 scaler = StandardScaler ()
6 X_scaled = scaler . fit_transform ( X )
7
8 # Division : 80% E n t r a n e m e n t , 20% Test
9 X_train , X_test , y_train , y_test = train_test_split (
10 X_scaled , y , test_size =0.2 , random_state =42
11 )

1.3 Recherche du meilleur K (Elbow Method)


Nous allons tester plusieurs valeurs de K pour trouver celle qui maximise la précision.
Code d’aide :
1 from sklearn . neighbors import KNeighborsClassifier
2
3 scores = []
4 k_range = range (1 , 21) # On teste K de 1 à 20
5
6 for k in k_range :
7 knn = KNeighborsClassifier ( n_neighbors = k )
8 knn . fit ( X_train , y_train )
9 scores . append ( knn . score ( X_test , y_test ) )
10
11 # Affichage graphique
12 plt . plot ( k_range , scores , marker = ’o ’)
13 plt . xlabel ( ’ Valeur de K ’)
14 plt . ylabel ( ’ Accuracy ’)
15 plt . grid ( True )
16 plt . show ()

2
1.4 Interprétation des Résultats
Choisissez le meilleur K (le point le plus haut sur la courbe) et ré-entraı̂nez le modèle final.
Affichez la matrice de confusion.

Aide à l’interprétation : Matrice de Confusion

Une matrice de confusion 4 × 4 montre les erreurs de classement.

- Diagonale : Prédictions correctes (ex: Prédit Classe 2, Réalité Classe 2).

- Hors Diagonale : Erreurs.

- Analyse : Si vous voyez beaucoup d’erreurs entre la classe 1 (Medium) et la classe


2 (High), c’est ”normal” car les prix sont proches. Une erreur entre classe 0 (Low)
et 3 (Very High) serait très grave (le modèle n’a rien compris).

Question 1.2 : Votre modèle fait-il des erreurs ”graves” (confusion entre classes éloignées)
ou ”acceptables” (confusion entre classes voisines) ?

3
2 Exercice 2 : Arbres de Décision
Objectif : Prédire l’attrition client (Customer Churn).

2.1 Présentation du Problème


Nous travaillons pour une entreprise de télécommunications. L’objectif est de prédire si un client
va se désabonner (Churn = Yes) ou rester (Churn = No) le mois prochain. Les arbres de décision
divisent la population en segments de plus en plus purs.

Exemple d’Arbre de Décision


Racine : Le contrat est-il ’Month-to-month’ ?
↙ (OUI) (NON) ↘
Internet = Fibre ? Ancienneté ¿ 2 ans ?
↙ ↘ ↙ ↘
CHURN STAY CHURN STAY

Figure 2: Structure hiérarchique d’un arbre de décision.

Dataset : ”Telco Customer Churn”


Lien : [Link]
Variables clés : tenure (ancienneté), MonthlyCharges, Contract, PaymentMethod.

2.2 Nettoyage et Encodage


Contrairement au KNN, les arbres gèrent bien les variables non standardisées, mais ils nécessitent
que toutes les entrées soient numériques.
Consignes :
1. Chargez le fichier WA Fn-UseC -[Link].

2. Nettoyage : La colonne TotalCharges contient parfois des espaces vides. Forcez la conver-
sion en numérique : df[’TotalCharges’] = [Link] numeric(df[’TotalCharges’], errors=’coerce’)
puis remplissez les NaN avec 0.

3. Encodage : Transformez les variables textuelles (Contract, PaymentMethod, Gender, etc.)


en nombres.

- Utilisez [Link] dummies(df) pour le One-Hot Encoding (recommandé pour les va-
riables sans ordre).
- Ou LabelEncoder pour la variable cible Churn (Yes=1, No=0).

2.3 Entraı̂nement et Visualisation


Entraı̂nez un arbre de décision avec une profondeur maximale limitée (max depth=3) pour qu’il
reste lisible.
Code d’aide :
1 from sklearn . tree import DecisionTreeClassifier , plot_tree
2
3 # Entra nement
4 modele_arbre = De ci si onT re eC las si fi er ( max_depth =3 , criterion = ’ gini ’ ,
random_state =42)

4
5 modele_arbre . fit ( X_train , y_train )
6
7 # Visualisation Graphique
8 plt . figure ( figsize =(20 ,10) )
9 plot_tree ( modele_arbre ,
10 feature_names = X . columns ,
11 class_names =[ ’ Stay ’ , ’ Churn ’] ,
12 filled = True ,
13 rounded = True ,
14 fontsize =10)
15 plt . show ()

2.4 Interprétation de l’Arbre


Analysez le graphique généré ci-dessus. Chaque rectangle (nœud) contient des informations
cruciales.

Comment lire un nœud ?


- Condition : La règle en haut (ex: Contract Month-to-month <= 0.5). Si VRAI,
on va à gauche, sinon à droite.

- Gini : L’impureté. 0 = Parfaitement pur (tous les clients sont de la même classe).
0.5 = Mélange égal.

- Samples : Combien de clients sont dans ce nœud.

- Value : La répartition [Nombre Stay, Nombre Churn].

- Class : La classe majoritaire (la prédiction finale si on s’arrête là).

Question 2.1 : Quelle est la variable à la racine (tout en haut) ? C’est le facteur le plus
déterminant pour prédire le départ d’un client. Est-ce le type de contrat, le prix ou l’ancienneté
?
Question 2.2 : Identifiez un profil type de client ”à risque”. (Exemple : ”Les clients avec
un contrat mensuel et une facture ¿ 70$ ont une forte probabilité de partir”).

3 Comparaison Finale

Algorithme KNN Arbre de Décision


Nécessite de standardiser les données. Fonctionne sans standardisation.
Boı̂te noire (difficile d’expliquer pourquoi). Boı̂te blanche (Règles claires).
Lent à la prédiction (doit mesurer les dis- Très rapide à la prédiction.
tances).
Performance dépend de K. Performance dépend de la profondeur.

Table 1: Synthèse rapide

Vous aimerez peut-être aussi