4.1 Développement et fonctionnement de
l'algorithme
Le modèle de prévision a été
développé en utilisant le langage de programmation Python et les
bibliothèques TensorFlow, Keras et Flask en suivant les étapes de
la figure ci-dessous.
Figure 12. Etapes de développement du modèle
Source : (Réalisation personnelle, 2023)
a. Préparation des données
- Les données sont chargées
à partir d'un fichier CSV contenant les informations sur les prix des
produits agricoles.
- Les variables catégorielles telles que
le département, la commune et le marché sont encodées en
valeurs numériques à l'aide de l'encodeur de labels. -
Les lignes vides et les lignes identiques sont supprimées.
- Les données sont mises à
l'échelle à l'aide du MinMaxScaler pour les rendre comprises
entre 0 et 1.
b. Construction du modèle LSTM
- Un modèle séquentiel est
créé à l'aide de la classe Sequential de Keras.
42
Réalisé et soutenu par Sabin ASSOGBA et Mario
LIGAN
- Quatre couches LSTM avec 100 unités sont
ajoutées, chacune suivie d'une couche de dropout pour éviter le
surapprentissage.
- Une couche Dense avec une unité est ajoutée en
sortie pour prédire le prix.
- Le modèle est compilé avec l'optimiseur Adam et
la perte est définie comme l'erreur quadratique moyenne
(mean_squared_error).
c. Entraînement du modèle
- Le modèle est entraîné sur les
données d'entraînement en utilisant les données
d'entrée X_train_lstm et les étiquettes y_train_lstm.
- L'entraînement est effectué pendant 100
époques avec une taille de lot de 32.
d. Évaluation du modèle
- Les données de test sont chargées à
partir d'un fichier CSV distinct.
- Les mêmes étapes de prétraitement sont
appliquées aux données de test.
- Les données de test sont mises à
l'échelle et converties en séries temporelles
pour être compatibles avec le modèle LSTM.
- La perte du modèle est évaluée sur les
données de test à l'aide de la méthode
evaluate.
e. Utilisation du modèle pour les prédictions en
temps réel
- Une application Web basée sur Flask est
créée pour fournir une interface permettant de faire des
prédictions en temps réel.
- Les données d'entrée sont envoyées
à l'application sous forme de requête JSON.
- Les valeurs des champs (année, mois, département,
commune, marché) sont extraites de la requête.
- Les valeurs sont encodées et mises à
l'échelle de la même manière que lors de
l'entraînement du modèle.
- Les données sont converties en séries temporelles
et transposées pour être compatibles avec le modèle
LSTM.
- La prédiction du prix est effectuée à
l'aide du modèle et inversée à l'aide du scaler pour
obtenir une valeur réelle.
- La prédiction est renvoyée sous forme de
réponse JSON.
43
Réalisé et soutenu par Sabin ASSOGBA et Mario
LIGAN
Le modèle LSTM utilisé dans ce projet tire parti
des dépendances temporelles à long terme pour prédire les
prix des produits agricoles. Il a été choisi en se basant sur une
étude comparative qui a montré son efficacité par rapport
à d'autres algorithmes de machine learning tels que ARIMA, SVR, Prophet
et XGBoost. Le modèle LSTM permet de capturer les tendances et les
schémas complexes dans les données historiques des prix
agricoles, ce qui peut aider les agriculteurs et les décideurs à
prendre des décisions éclairées en matière de
planification et de gestion des ressources.
L'application Web basée sur laravel offre une interface
conviviale pour l'utilisation du modèle de prédiction en temps
réel. En fournissant les données d'entrée
appropriées, telles que l'année, le mois, le département,
la commune et le marché, les utilisateurs peuvent obtenir des
prédictions fiables sur les prix des produits agricoles.
Les données qui ont servi à développer le
model sont présentées dans le tableau ci-dessous.
Tableau 4 : Tableau récapitulatif des
données collectées
Département
|
Communes
|
Marchés
|
Nombres de données
|
Alibori
|
Banikoara
|
Banikoara
|
112
|
Malanville
|
Malanville
|
125
|
Atacora
|
Tanguiéta
|
Tanguiéta
|
50
|
Ban'têtê
|
75
|
Borgou
|
Parakou
|
Parakou
|
50
|
Arzèkè
|
76
|
Collines
|
Glazoué
|
Glazoué
|
48
|
Gbomina
|
78
|
Dassa-Zoumè
|
Dassa-Zoumè
|
40
|
44
Réalisé et soutenu par Sabin ASSOGBA et Mario
LIGAN
|
|
|
|
Ungbadjo
|
69
|
Donga
|
Djougou
|
Djougou
|
49
|
Zougou-Yobou
|
75
|
Littoral
|
Cotonou
|
Dantokpa
|
130
|
Houéyiho
|
40
|
Plateau
|
Kétou
|
Kétou
|
50
|
Assena
|
79
|
Zou
|
Bohicon
|
Bohicon
|
131
|
Abomey
|
Houndjro
|
114
|
Total
|
1391 données
|
|