Vous êtes sur la page 1sur 14

REPUBLIQUE DU BENIN

*********
MINISTERE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE
LA RECHERCHE SCIENTIFIQUE
(MESRS)

***********
UNIVERSITE NATIONALE DES SCIENCES TECHNOLOGIES, INGÉNIERIE ET MATHÉMATIQUES
(UNSTIM)

************
ECOLE NATIONALE DE GÉNIE MATHÉMATIQUE ET MODÉLISATION
(ENSGMM)

*********
STAGE ACADÉMIQUE 2022

Présenté par : Superviseurs de Stage


TOHA Rodéo Oswald Y. Mme Mélaine GBENOU
M. DOSSOU Irénée
Année Académique : 2021-2022

Plan
Avant-propos

Le présent rapport a été réalisé à l'issue d’un stage de découverte effectué au sein de l’entreprise
GREENTECHSERVICES située à Cotonou ZOGO dans le but de clore ma deuxième année en classe
d’ingénieur à l'Ecole Nationale Supérieure de Génie Mathématique et Modélisation (ENSGMM).
L’expérience et les interventions de mon maître de stage ont été très utiles pour recadrer mon
expérience en entreprise. Ce rapport de stage a pour objectif de rendre compte de mon séjour au
sein de cette entreprise.

Remerciements

Avant tout développement sur cette expérience professionnelle, il apparaît opportun de commencer
ce rapport de stage par des remerciements, à ceux qui m’ont guidé au cours de ce stage, et même à
ceux qui ont eu la gentillesse de faire de ce stage un moment profitable. A cet effet, j’adresse mes
remerciements :

● A Mme Mélaine GBENOU, Directrice Générale de GREENTECHSERVICES pour avoir accepté


de me laisser effectuer mon stage dans cette entreprise.
● A mon maître de stage, M. Irénée DOSSOU pour sa disponibilité et la qualité de son
encadrement.
● A l’ensemble du personnel , des jeunes forts et déterminés, de GREENTECHSERVICES, tous
dignes de leurs postes, pour m’avoir formé et accompagné tout au long de cette expérience
professionnelle avec beaucoup de patience et de pédagogie.

Résumé

Le stage de découverte dans le cadre de ma formation académique s’est déroulé du 04 Août au 04


Octobre 2022 dans l’entreprise GREENTECHSERVICES. Pendant ce stage que j’ai effectué en tant que
profil IA, plusieurs missions m’ont été confiées dont notamment le développement d’un modèle pour
un projet de l’entreprise, la conception d’un d’une application web avec le Framework Django. La
plupart de ces missions ont été effectuées avec succès malgré les quelques difficultés qui ont été
rencontrées. Ces difficultés ont été surmontées principalement grâce à l’intervention de mon maître
stage et grâce à mon travail personnel. Ce stage m’a permis d’acquérir de l’expérience, de m’adapter
aux réalités des entreprises et de me faire une idée de ma vie professionnelle à venir.

Introduction

Du 04 Août au 04 Octobre, j’ai effectué un stage académique au sein de l’entreprise


GREENTECHSERVICES située à Cotonou ZOGBO. Au cours de ce stage qui s’est rigoureusement
déroulé pendant deux mois, j’ai pu expérimenter la vie en entreprise tout en perfectionnant mettant
en pratique mes connaissances dans les domaines de l’Apprentissage Automatique et de
l’Apprentissage Profond. Mon stage au sein de cette entreprise a consisté à, dans un premier temps,
participer à un projet sur lequel l’équipe travaillait avant mon arrivée tout en développant un modèle
de l’Apprentissage Automatique , puis dans un second temps à concevoir un site web avec le
Framework Django. J’ai eu l’opportunité à travers ces deux grandes missions et d’autres petites
missions que j’ai eu à réaliser d’exploiter mes compétences en statistique et en analyse de données
acquises au cours de mon cursus à l’ENSGMM. Plus largement, ce stage a été l’occasion pour moi de
pouvoir mieux m’orienter dans ma carrière professionnelle. Ce rapport rendra compte des savoirs
tirés des travaux auxquels j’ai eu à prendre part.
I. Présentation de l’entreprise :

GREENTECHSERVICES est une entreprise spécialisée dans la conception, la structure et du


contenu et l’écriture des programmes informatiques nécessaires à la création et à l’implantation
de logiciels systèmes et réseaux, applications logicielles, les bases de données, pages web,
l’adaptation de logiciels, c’est-à-dire la modification et la configuration d’une application
existante pour la rendre opérationnelle dans l’environnement informatique du client.

II. Les missions effectuées

a) Mission 1 : Apprendre à utiliser le Framework  « Flask »

Ma première mission était de me familiariser avec le Framework « Flask ». Ce qui a été


rapidement fait. En effet, « Flask » est un micro framework web Python léger, qui fournit des
outils et des fonctionnalités utiles qui facilitent la création d'applications web en Python. Il offre
aux développeurs une certaine flexibilité et constitue un cadre plus accessible pour les nouveaux
développeurs, puisque vous pouvez construire rapidement une application web en utilisant un
seul fichier Python. « Flask » est également extensible et ne force pas une structure de
répertoire particulière ou ne nécessite pas de code standard compliqué avant de commencer.
L’apprentissage de cet outil m’a permis de pouvoir travailler avec facilité avec mon équipe sur des
projets de développement de modèles d’Apprentissage Automatique.

b) Mission 2 : Développer un modèle d’Apprentissage Automatique

Ma deuxième mission était de développer un modèle d’Apprentissage Automatique pour aider


sur l’un des projets confidentiels sur lesquels travaillait l’entreprise. Je ne pourrai
malheureusement pas écrire ledit projet sous clauses de confidentialité. Néanmoins je puis dire
que le modèle a été développé avec succès avec un score de 75%. Il s’agissait d’un modèle de
SVC (Support Vector Classification), que j’ai appris pendant mes propres recherches sur les
différents types de modèles après le cours d’Analyse de Données.

c) Mission 3 : Apprendre à utiliser le Framework « Streamlit »

Ma troisième mission a été de me familiariser avec le Framework « Streamlit ». Streamlit est un


framework open-source Python spécialement conçu pour les ingénieurs en Machine Learning
et les Data scientists.  Ce framework permet de créer des applications web qui pourront
intégrer aisément des modèles de Machine Learning et des outils de visualisation de données.
Contrairement aux autres framework python (Dash, Flask, …) pour créer des applications
autour des données, Streamlit permet de créer de belles applications web sans écrire de code
HTML. Ce framework permet aussi d’avoir des applications performantes grâce à la mise en
cache via une annotation. Après m’être rapidement familiarisé avec Streamlit et vu sa
flexibilité, j’ai eu à réaliser plusieurs petites applications web avec Streamlit.
Dans la suite, je présenterai deux petites applications web réalisées grâce à l’outil streamlit.

● Première web App : Iris Flower Classifier

Il s’agit d’un projet d'apprentissage automatique très populaire. L'ensemble de données d'iris


contient trois classes de fleurs, Versicolor, Setosa, Virginica, et chaque classe contient 4
caractéristiques, Sepal length, Sepal width, Petal length, Petal width. Le but de la classification
des fleurs d'iris est de prédire les fleurs en fonction de leurs caractéristiques spécifiques. Ce
projet m’a d’ailleurs permis de revoir rapidement toutes les notions que j’ai acquises en
modélisation statistique puisqu’il s’agit d’un projet Machine Learning, qui suit pratiquement
toutes les étapes de la modélisation statistique. Alors, pour mener à bien ce projet, j’ai suivi les
étapes principales de la modélisation statistique, savoir :

1. Charger les données


2. Analyser et visualiser le jeu de données
3. Entraînement du modèle.
4. Évaluation du modèle.
5. Tester le modèle.

L’objectif ici est de présenter le résultat de l’application web réalisée et non de tergiverser sur
toutes les analyses statistiques qui ont été faites avant de construire le modèle proprement dit.
Ainsi, après la construction du modèle, nous l’avons intégré dans l’application proprement dite
grâce au framework Streamlit. Voici le résultat :

La capture de gauche montre bien des slides qui permettent à l’utilisateur de choisir les valeurs
données des variables, et dans la capture de gauche, nous avons un tableau qui affiche
systématiquement les entrées de l’utilisateur, et puis l’application affiche la catégorie de la fleur qui
répond aux valeurs entrées. Autrement dit, une interprétation des captures précédentes est la
suivante : Le type de fleur ayant 6.40, 3.14, 5.25 et 0.94 comme respectivement sepal length, sepal
width, petal length et petal width est setosa.

Deuxième Web App : Dans ce projet, nous développerons et évaluerons les performances et le
pouvoir prédictif d'un modèle entraîné set testé sur des données collectées dans des maisons de
la banlieue de Boston. Une fois que nous aurons obtenu un bon ajustement, nous utiliserons ce
modèle pour prédire la valeur monétaire d'une maison située dans la région de Boston. Un
modèle comme celui-ci serait très précieux pour un agent immobilier qui pourrait utiliser les
informations fournies au quotidien.
d) Mission 4 : Apprendre à créer de site web avec Django

Ma quatrième mission a été de réaliser un « disquaire » avec le Framework « Django ». Cette


dernière n’a vraiment pas été achevée à cause du temps. Le projet a été certes mené jusqu’à la fin,
mais en ce qui concerne le déploiement, le temps faisait largement défaut. Néanmoins, j’ai appris
beaucoup de choses en un laps de temps. J’ai eu dans un premier temps à m’initier au Framework
proprement dit, avec les syntaxes qui m’étaient étrangères au début de l’apprentissage. Dans un
second temps, j’ai eu à commencer avec le projet tout en m’adaptant au fur et à mesure de
l’apprentissage.

Voici quelques grandes lignes de ce projet:

1. Création d’un projet Django


2. La couche des vues
3. La couche de modèles (templates)
4. Django Admin
5. ORM
6. Le routage URL
7. La base de données

1. Création d’un projet:

La première des choses que j’ai eu à faire dans ce projet est la création d’un “projet”. Ce
dernier un package Python – c'est-à-dire un répertoire de code – qui contient tous les
paramètres d'une instance de Django. Cela inclut la configuration de la base de données, les
options spécifiques à Django et les paramètres spécifiques à l'application.

2. La couche des vues

Une vue (en anglais, views) est une fonction responsable du rendu d'une page.

3. La couche de modèles ( templates)

Un modèle Django est simplement un document texte ou une chaîne Python balisée à l'aide du
langage de modèle Django. Certaines constructions sont reconnues et interprétées par le moteur
de gabarit. Les principales constructions sont les variables et les balises.

Un modèle est rendu avec un contexte. Le rendu remplace les variables par leurs valeurs, qui
sont recherchées dans le contexte, et exécute les balises. Tout le reste est sorti tel quel.

Afin d'organiser les données du stockage de votre app, django vous offre l'outil nommé modèle
(django model).

● Un modèle abrite sous forme des classes les noms des tables et des champs
(attributs) des données du stockage.
● Chaque modèle correspond à une seule table de base de données.
● Chaque modèle est une classe Python qui hérite de django.db.models.Model.
● Chaque attribut du modèle représente un champ de base de données.

4. Django Admin
L'un des aspects les plus importants de Django est qu'il contient une interface de contrôleur
d'administration automatisée par défaut. Le site de l'administrateur Django lit les métadonnées
de vos modèles pour fournir un lien rapide et modulaire pour gérer le contenu de votre site.

L'administrateur est activé sur le modèle de projet par défaut créé via la commande startproject.

5. L’ORM

ORM signifie Object Relational Mapper. L'objectif principal d'ORM est d'envoyer des données
entre une base de données et des modèles dans une application. Il établit une relation entre la
base de données et un modèle. Ainsi, ORM mappe les attributs d'objet aux champs d'une table.
Le principal avantage de l'utilisation d'ORM est qu'il rend l'ensemble du processus de
développement rapide et sans erreur. Essentiellement, cela élimine le besoin d'écrire du code
SQL.

6. Le routage URL

Une application Web se compose de plusieurs pages et chaque page a son propre itinéraire. Un
itinéraire peut être défini comme une URL qui affiche une page Web particulière sur le
navigateur. Django nous permet de router les URL comme nous le souhaitons et sans limitation
de framework
Nous avons juste cité quelques grandes lignes dans le déroulement d’un projet Django, mais
par-dessus tout ça, j’ai eu à retenir que l'arborescence des dossiers dans un projet Django sont
d’une importance capitale.

III. Apports du stage et compétence acquise

Au cours de ces 2 mois de stage, j'ai appris énormément de choses tant au niveau théorique,
pratique que social. En effet, la disponibilité des ressources (notamment la connexion internet)
et les directives de mon maître de stage m’ont permis de tirer le meilleur de moi-même. Les
exigences face à la qualité du travail produit me poussaient à remettre en cause perpétuellement
tout ce que je faisais afin de les améliorer du mieux possible. Enfin, j’ai également appris à
respecter les différents processus administratifs et à me soumettre aux besoins de mes
supérieurs. Au cours de ces quelques semaines réalisées au sein de l’entreprise
« GREENTECHSERVICES », j’ai pu acquérir plusieurs compétences que sont :

● Une maîtrise générale du langage de programmation Python


● La conception d’un modèle d’Apprentissage Profond (DL) avec le Framework  « Keras » ;
● La conception d’un site web avec le Framework « Django »;
● La réalisation de web App avec les Framework « Flask » et « Streamlit »
● La gestion de A à Z d’un projet d’Apprentissage Automatique

IV. Difficultés rencontrées et solutions apportées

a) Les missions confiées n'ont pas toutes été faciles à effectuer.

● Les obstacles majeurs rencontrés sont entre autres :


● Le long trajet qui sépare le lieu de stage de mon domicile ;
● L’absence de prérequis en Intelligence Artificielle ;
● L’absence de connaissance en conception d’API ;
● L’absence de prérequis en programmation web.

b) Solutions

Afin de mener avec succès les tâches qui m’ont été confiées, j’ai su m'adapter aux situations et
j’ai pu trouver des solutions aux différents problèmes rencontrés.

∙ Le problème de manque de connaissance en Intelligence Artificielle a été résolu en me


documentant sur Google et en suivant des formations sur YouTube ;

∙ Le problème de manque de connaissance en développement de site web a été résolu en


suivant aussi des formations et en me faisant hautement aider par les interventions régulières de
mon maître de stage.
Conclusion 

Ainsi, dans le cadre de mes études des mathématiques appliquées, j’ai eu la chance d’effectuer un
stage au sein de l’entreprise « GREENTECHSERVICES ». Cette expérience a été très enrichissante car
elle m'a permis de découvrir en contexte les réalités du terrain, ainsi que les différentes missions et
postes qui contribuent à son développement. En participant au quotidien à la vie de l’entreprise et en
interagissant avec ses différents acteurs, j’ai pu appréhender les différents enjeux du Machine
Learning soulevés au sein de l’entreprise. De plus, j'ai pu acquérir diverses compétences, développer
un modèle de Machine Learning et faire de petits web App avec « streamlit » et comprendre les
notions basiques pour la gestion d’une application web avec Django. Ce stage m'a donc permis de me
réaliser à quel point les notions théoriques acquises en cours étaient indispensables. L’entreprise au
sein de laquelle j’ai pu évoluer fait face à des problèmes réels de mathématiques appliquées, à savoir
les problèmes d’optimisation. Fort de cette expérience et ayant désormais une idée plus claire de
l’utilité des mathématiques appliquées, j’aimerais dorénavant pouvoir m’orienter vers le Machine
Learning et la modélisation numérique.

Vous aimerez peut-être aussi