Université des Sciences et de la Technologie
Houari Boumédiene
Faculté de Génie Electrique - Département de Télécommunication
Master : Réseaux et Télécommunications
(RT)
Matière
Intelligence artificielle
(IA)
Travaux de Laboratoire N° : 4
Responsable de la matière
Youcef CHIBANI, Prof., Dr.
Année universitaire 2024/2025
Page 1
1. Objectif du TL
L’objectif de ce TL est l’utilisation du perceptron multi-couches (PMC) ou en
anglais pour Multi-Layer Perceptron (MLP) pour résoudre des problèmes de
classification en utilisant des datasets. Le choix de la dataset dépend du groupe de
TP et de l'enseignant responsable. La dataset à utiliser sera communiquée via
Classroom par l'enseignant responsable de la séance du TP.
Pour chaque application, chaque étudiant devra trouver la bonne architecture en
justifiant par des évaluations quantitatives : Perte (Loss), Accuracy (Justesse),
Précision (Precision), etc.
2. Définition de l'architecture du MLP
Pour l'implémentation du MLP, nous utilisons le package PyTorch. Pour cela,
l'architecture d'un MLP est définie dans une classe d'objet nommée NNClassifier
composée de deux fonctions :
une fonction nommée " __init__ " pour initialiser les différentes couches du
MLP.
une fonction nommée " forward "pour former l'architecture MLP.
La classe NNClassifier est définie de la manière suivante :
class NNClassifier(nn.Module):
def __init__(self, input_size):
super(NNClassifier, self).__init__()
self.fc1 = nn.Linear(input_size, 8)
self.fc2 = nn.Linear(8, len(label_encoder.classes_)) # Output layer size is
number of classes
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
NNClassifier est le nom donné à la classe pour créer le MLP.
La méthode Linear permet de former une couche en précisant le nombre de
nœuds en entrée et le nombre nœuds en sortie.
relu est la méthode d'activation de forme linéaire.
Après avoir défini l'architecture, une procédure d'apprentissage est alors exécutée
en fixant le critère d'optimisation, l'optimiseur, le nombre d'itérations et le nombre
de batchs.
Le code complet est disponible sur Classroom.
Page 2
3. Préparation des données
3.1. Datatset "Crop Recommentation"
Une dataset est proposée nommée "Crop Recommendation" pour comprendre
toutes les étapes de l'apprentissage et de l'évaluation du MLP. Elle comprend des
paramètres du sol (N, P, K, etc) pour recommander le type de culture.
Le code Python pour la classification du type de culture est disponible sur la
plateforme ClassRoom. La dataset est subdivisée en trois sous-ensembles :
Apprentissage (60%), Validation (20%) et Test (20%).
3.2. Datatset "Bird Song"
Cette dataset est utilisée pour développer une application complète pour
l'identification des oiseaux à partir de leur chant.
Le développement de l'application requiert deux grandes étapes :
Etape 1 : Génération des caractéristiques
Chargement des noms de fichiers stockés dans un fichier csv
Extraction des caractéristiques en utilisant le MFCC et t-SNE pour générer le
vecteur caractéristique.
Stockage des vecteurs caractéristiques avec les labels dans un fichier csv.
Etape 2 : Classification
Chargement de la dataser contenant les caractéristiques avec les labels.
Partition de la dataset en trois sous-ensembles : Train (60%), Val (20%), Test
(20%)
Entrainement du modèle en utilisant les datasets Train et Val.
Validation du modèle en utilisant les courbes du Loss et Accuracy.
Evaluation du modèle sur des données de tests.
3.3. Datatset "LTE"
Cette dataset est utilisée pour développer une application complète pour
l'identification du lieu d'enregistrement des signaux de télécommunications. Cette
dataset regroupe plusieurs mesures collectées dans des environnements différents.
Dans notre cas, nous exploitons les mesures :
['RSRP', 'RSRQ', 'RSSI', 'SNR', 'DL_bitrate', 'UL_bitrate', 'path']
où la mesure 'path' définit la classe.
Le développement de l'application requiert deux grandes étapes :
Etape 1 : Préparation de la dataset
Chargement du fichier csv contenant toutes les données.
Sélection des colonnes :
['RSRP', 'RSRQ', 'RSSI', 'SNR', 'DL_bitrate', 'UL_bitrate', 'path']
Filtrage des données absentes (cases vides).
Stockage des données filtrées dans un fichier csv.
Page 3
Etape 2 : Classification
Chargement de la dataset filtrée contenant les caractéristiques avec les labels.
Partition de la dataset en trois sous-ensembles : Train (60%), Val (20%), Test
(20%)
Entrainement du modèle en utilisant les datasets Train et Val.
Validation du modèle en utilisant les courbes du Loss et Accuracy.
Evaluation du modèle sur des données tests.
4. Evaluation du MLP
Pour l'évaluation des performances de la classification par MLP, nous utilisons les
métriques suivantes (from sklearn.metrics) :
- accuracy_score(c_true,c_pred) : permet d'évaluer la précision de la
classification entre la classe réelle et la classe prédite. Cette fonction sera
utilisée principalement pour tracer la précision en fonction des itérations.
- classification_report(c_true,c_pred) : permet de fournir les performances de la
classification notamment la précision (precision), le rappel (recall), F1-score et
la justesse du modèle (accuracy).
Durant l'entrainement du modèle, nous utilisons la perte (loss) et la justesse
(accuracy_score) pour évaluer la convergence du MLP en fonction des itérations.
Par contre, classification_report est utilisé à la fin de l'entrainement pour évaluer le
MLP sur des données d'apprentissage, de validation et de test.
5. Travail demandé
5.1. Dataset "Crop Recommendation"
1. Quel est le nombre de caractéristiques et le nombre classes ?
2. Quel est le format des classes ?
3. Tracer l'architecture MLP proposée dans le code Python.
4. En exploitant le code Python disponible sur ClassRoom, donner
l'organigramme du déroulement de l'exécution du programme.
5. Expliquer comment se fait l'apprentissage et la validation par batch. Donner
les équations mathématiques correspondantes.
6. En jouant sur les paramètres notamment le batch_size et en exploitant les
courbes du Loss et de l'Accuracy, déterminer l'architecture optimale du
PMC.
7. En déduire l'Accuracy et la Précision du PMC sur les données Test.
8. Refaire les mêmes expériences en ajoutant une couche cachée dans le MLP.
9. Comparer les résultats entre l'architecture initiale et la nouvelle architecture
après ajout de la couche cachée.
Page 4
5.2. Datatset spécifique (Bird Song et LTE)
1. Quel est le nombre de classes ? Donner le nom de chaque classe.
2. Quel est le nombre d'échantillons par classe ?
3. En exploitant le code Python disponible sur ClassRoom, comment peut-on
l'utiliser dans l'application spécifique ? Donner dans ce cas l'organigramme
d'utilisation du code Python pour l'application spécifique.
4. Adapter le code Python de classification "Crop Recommendation" pour
l'application spécifique.
5. Déterminer l'architecture optimale du MLP.
6. En déduire l'Accuracy) et la Précision (Precision) du MLP sur les données
Test.
Page 5