INTELLIGENCE ARTIFICIELLE
NIVEAU 4 — AVANCÉ
Mathématiques de l'IA • CNN • NLP Pipeline • Déploiement • IA Business
Pour le futur ingénieur béninois — À partir de 12 ans 🚀
Suite directe du Niveau 3 (Python, réseaux de neurones, Deep Learning).
Ce niveau introduit les mathématiques concrètes de l'IA, les CNN, le déploiement de modèles, l'IA business et un projet complet de bout en bout.
📋 Sommaire — Niveau 4
| Chapitre | Titre | Page |
|---|---|---|
| 29 | Les mathématiques de l'IA : dérivées et descente de gradient | 3 |
| 30 | Les CNN — Réseaux convolutifs pour la vision | 4 |
| 31 | Pipeline NLP complet : de la phrase au modèle | 5 |
| 32 | Évaluer un modèle : métriques et matrices de confusion | 6 |
| 33 | Régularisation : éviter le surapprentissage | 7 |
| 34 | Déployer une IA : API, Flask et mobile | 8 |
| 35 | IA responsable : gouvernance et droit au Bénin | 9 |
| 36 | Créer une startup IA au Bénin — Business plan | 10 |
| 37 | Projet bout-en-bout : IA de détection de paludisme | 12 |
| 38 | Préparer ta carrière : ressources et prochaines étapes | 15 |
| — | Révisions et corrigés | 17 |
🎯 Prérequis Niveaux 1-3 : ce que tu maîtrises déjà
- ✔ Python : variables, boucles, conditions, listes, fonctions.
- ✔ Données : Pandas, Matplotlib, train/test split.
- ✔ Réseaux de neurones : couches, poids, rétropropagation.
- ✔ Deep Learning : transformers, attention, tokens, embeddings.
- ✔ Éthique : biais, fairness, données privées.
- ✔ Modèle de prédiction agricole créé de bout en bout.
Chapitre 31 — Les mathématiques de l'IA 📐
Derrière chaque réseau de neurones, il y a des mathématiques. Comprendre ces bases te permettra de vraiment contrôler tes modèles, pas juste les copier-coller.
📉 La fonction de perte (Loss Function)
La fonction de perte mesure à quel point ton modèle se trompe. Plus le chiffre est grand, plus le modèle est mauvais. L'objectif de l'entraînement : minimiser cette valeur.
Formule de l'Erreur Quadratique Moyenne (MSE)
MSE = (1/n) × Σ (prédictioni − vraie_valeuri)²
Exemple béninois
Prédit : 1200 kg de maïs | Réel : 1000 kg
Erreur = (1200 − 1000)² = 40 000
Plus l'erreur est petite, plus le modèle est précis.
⛰️ La descente de gradient
La descente de gradient est l'algorithme qui ajuste les poids du réseau pour réduire la perte. Imagine que tu es au sommet d'une colline et tu veux descendre vers le point le plus bas — c'est exactement ça.
# Descente de gradient — exemple simplifié
poids = 0.5 # valeur initiale aléatoire
taux_apprentissage = 0.01 # aussi appelé 'learning rate'
for etape in range(1000): # 1000 itérations
prediction = poids * entree
erreur = prediction - vraie_valeur
gradient = erreur * entree
poids = poids - taux_apprentissage * gradient
# Le poids se rapproche de la valeur optimale
print('Poids optimal trouvé :', round(poids, 4))
| Valeur | Effet | Analogie béninoise |
|---|---|---|
| Trop grand (0.9) | Saute par-dessus le minimum, diverge | Tu sautes de marche en marche, tu rates l'escalier |
| Trop petit (0.00001) | Converge très lentement | Tu avances à pas de fourmi jusqu'à Abomey |
| Optimal (0.01) | Converge rapidement et précisément | Zémidjan à vitesse parfaite dans les rues de Cotonou |
✏️ Exercice 1
Calcule l'erreur MSE pour ces prédictions de récolte (en kg) :
Réel : [1000, 800, 1200]
Prédit : [1100, 750, 1300]
Étape 1 — Calculer chaque erreur au carré :
(1100−1000)² =
(750−800)² =
(1300−1200)² =
Étape 2 — MSE = somme / 3 = / 3 =
Chapitre 32 — Les CNN : Réseaux convolutifs pour la vision 👁️
Au Niveau 3, tu as vu la vision par ordinateur. Maintenant allons plus loin : les CNN (Convolutional Neural Networks) sont l'architecture qui a révolutionné la reconnaissance d'images.
🔍 Le principe de la convolution
Une convolution, c'est faire glisser un petit filtre sur une image pour détecter des motifs : bords, textures, formes. C'est comme chercher un motif wax spécifique dans un grand tissu.
🧵 Analogie avec le tissu wax béninois
Imagine un tissu wax avec des motifs répétitifs.
Tu passes un petit carré de 3×3 pixels sur l'image entière.
Quand ce filtre « voit » le motif qu'il cherche, il s'active fort.
Différents filtres détectent différents motifs : lignes, courbes, couleurs.
Les premières couches détectent les bords simples.
Les couches profondes détectent des formes complexes (visage, plante, animal).
| Couche | Rôle | Exemple (détection maïs sain/malade) |
|---|---|---|
| Conv2D | Détecte les motifs locaux | Détecte couleur jaune, taches brunes |
| ReLU (activation) | Garde les valeurs positives | Ignore les parties non pertinentes |
| MaxPooling | Réduit la taille, garde l'essentiel | Résume : « il y a une tache ici » |
| Flatten | Transforme en liste 1D | Prépare pour la décision finale |
| Dense (sortie) | Décide la catégorie | « Malade » à 87 % / « Sain » à 13 % |
🐍 Un CNN en Python avec Keras
import tensorflow as tf
from tensorflow.keras import layers, models
# Créer un CNN pour détecter les maladies du maïs
modele = models.Sequential([
# Couche 1 : détecte les motifs de base (bords, couleurs)
layers.Conv2D(32, (3,3), activation='relu', input_shape=(64,64,3)),
layers.MaxPooling2D(2,2),
# Couche 2 : détecte des motifs plus complexes (taches, formes)
layers.Conv2D(64, (3,3), activation='relu'),
layers.MaxPooling2D(2,2),
# Couche de décision finale
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(2, activation='softmax') # 2 classes : sain / malade
])
modele.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
modele.summary() # Affiche l'architecture complète
✏️ Exercice 2
Analyse l'architecture CNN ci-dessus et réponds :
1. Combien y a-t-il de couches Conv2D ?
2. Que fait MaxPooling2D ?
3. Pourquoi la couche Dense finale a-t-elle 2 neurones ?
4. Que signifie « softmax » dans la couche de sortie ?
Chapitre 33 — Pipeline NLP complet : de la phrase au modèle 🗣️
Au Niveau 3, tu as compris le principe du NLP. Ici, tu vas implémenter un pipeline NLP complet en Python — de la phrase brute jusqu'à la prédiction.
🔧 Les étapes d'un pipeline NLP
# ═══ PIPELINE NLP COMPLET — Classification de sentiments ═══
# Objectif : Détecter si un avis sur un marché béninois est positif ou négatif
import re
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
# ── ÉTAPE 1 : Données brutes (avis sur le marché Dantokpa) ──
avis = [
'Le marché est bien organisé et propre', # positif
'Les prix sont raisonnables aujourd hui', # positif
'Trop de monde, impossible de circuler', # négatif
'Les vendeurs sont aimables et honnêtes', # positif
'Produits pas frais, odeur désagréable', # négatif
'Bonne ambiance, je reviendrai', # positif
'Vol à la tire, insécurité totale', # négatif
'Grand choix de tissus wax, très satisfait', # positif
]
labels = [1, 1, 0, 1, 0, 1, 0, 1] # 1=positif, 0=négatif
# ── ÉTAPE 2 : Nettoyer le texte ──
def nettoyer(texte):
texte = texte.lower() # tout en minuscules
texte = re.sub(r'[^a-záàâéèêëîïôùûç ]', '', texte) # enlève ponctuation
return texte
avis_propres = [nettoyer(a) for a in avis]
# ── ÉTAPE 3 : Vectorisation TF-IDF ──
# ── ÉTAPE 4 : Entraîner un pipeline complet ──
X_train, X_test, y_train, y_test = train_test_split(
avis_propres, labels, test_size=0.25, random_state=42)
pipeline = Pipeline([
('tfidf', TfidfVectorizer()),
('classifieur', MultinomialNB())
])
pipeline.fit(X_train, y_train)
# ── ÉTAPE 5 : Évaluer et prédire ──
print(classification_report(y_test, pipeline.predict(X_test)))
# Test sur un nouvel avis
nouvel_avis = ['Excellent service, produits frais']
pred = pipeline.predict(nouvel_avis)
print('Sentiment :', 'Positif' if pred[0]==1 else 'Négatif')
📊 TF-IDF : comment les mots deviennent des scores
TF (Term Frequency) = nombre de fois que le mot apparaît / total de mots
IDF (Inverse Document Frequency) = log(total docs / docs contenant ce mot)
TF-IDF = TF × IDF
Résultat : un mot fréquent partout (« le », « est ») a un score faible.
Un mot rare mais présent dans un document spécifique a un score élevé.
→ « Dantokpa » dans un avis sur le marché aura un score TF-IDF élevé !
✏️ Exercice 3
Réponds à ces questions sur le pipeline NLP :
1. À quoi sert la fonction nettoyer() dans le code ?
2. Que fait TfidfVectorizer ?
3. Donne 2 exemples d'avis positif sur un service béninois :
a)
b)
4. Donne 2 exemples d'avis négatif :
a)
b)
Chapitre 34 — Évaluer un modèle : métriques et matrices 📊
« Mon modèle a 90 % de précision » — mais est-ce vraiment bon ? Parfois non ! Comprendre les bonnes métriques est crucial, surtout pour des applications médicales au Bénin.
🔢 Les 4 cas possibles : matrice de confusion
| Prédit : POSITIF | Prédit : NÉGATIF | |
|---|---|---|
| Réel : POSITIF | ✅ VP Vrai Positif (malade → dit malade) |
❌ FN Faux Négatif (malade → dit sain) ⚠️ DANGEREUX |
| Réel : NÉGATIF | ⚠️ FP Faux Positif (sain → dit malade) |
✅ VN Vrai Négatif (sain → dit sain) |
📐 Les métriques dérivées
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# Exemple : IA de dépistage du paludisme au Bénin
# y_reel = [1,1,0,1,0,0,1,0] # 1=paludisme, 0=sain
# y_predit = [1,0,0,1,0,1,1,0]
# Précision = VP / (VP + FP)
precision = precision_score(y_reel, y_predit)
# Rappel (Recall / Sensibilité) = VP / (VP + FN)
rappel = recall_score(y_reel, y_predit)
# F1-Score = 2 × (précision × rappel) / (précision + rappel)
f1 = f1_score(y_reel, y_predit)
print(f'Précision : {precision:.2f} | Rappel : {rappel:.2f} | F1 : {f1:.2f}')
⚕️ Pourquoi le Rappel est crucial pour la santé au Bénin
Un FN (Faux Négatif) en médecine = dire à un malade qu'il est sain.
Pour le paludisme, la tuberculose, le cancer du col : un FN peut être fatal.
→ Dans les applications médicales, maximiser le Rappel est prioritaire.
→ On accepte plus de FP (tests inutiles) pour ne pas rater de vrais malades.
C'est pourquoi une IA médicale béninoise DOIT être évaluée avec le Rappel !
✏️ Exercice 4
Pour une IA de dépistage du paludisme, donne les résultats :
Vrais Positifs (VP) = 40 Faux Positifs (FP) = 10
Faux Négatifs (FN) = 5 Vrais Négatifs (VN) = 45
Précision = VP / (VP + FP) = / =
Rappel = VP / (VP + FN) = / =
Accuracy = (VP + VN) / Total = / =
Laquelle de ces 3 métriques est la plus importante ici et pourquoi ?
Chapitre 35 — Régularisation : éviter le surapprentissage 🎯
Ton modèle obtient 99 % sur les données d'entraînement mais seulement 60 % sur de nouvelles données ? C'est le surapprentissage (overfitting) — le problème le plus fréquent en IA !
| 🏋️ Surapprentissage (Overfitting) | 😴 Sous-apprentissage (Underfitting) |
|---|---|
| Parfait sur les données connues | Mauvais sur toutes les données |
| Échoue sur de nouvelles données | N'a pas assez appris |
| Modèle trop complexe | Modèle trop simple |
| Comme mémoriser l'examen sans comprendre | Comme dormir pendant les cours |
| Solution : régularisation + plus de données | Solution : modèle plus complexe, plus d'itérations |
🛠️ Les techniques de régularisation
import tensorflow as tf
from tensorflow.keras import layers, regularizers
# ── Technique 1 : Dropout ──
modele = tf.keras.Sequential([
layers.Dense(128, activation='relu'),
layers.Dropout(0.3), # ← Dropout 30%
layers.Dense(64, activation='relu'),
layers.Dropout(0.2), # ← Dropout 20%
layers.Dense(1, activation='sigmoid')
])
# ── Technique 2 : L2 Regularization ──
layers.Dense(64, activation='relu',
kernel_regularizer=regularizers.l2(0.001))
# ── Technique 3 : Early Stopping ──
early_stop = tf.keras.callbacks.EarlyStopping(
monitor='val_loss', patience=5, restore_best_weights=True)
modele.fit(X_train, y_train, epochs=100,
validation_split=0.2,
callbacks=[early_stop])
🇧🇯 Analogie béninoise : le bon étudiant vs le tricheur
Surapprentissage = l'élève qui copie toutes les réponses du manuel par cœur.
Il réussit l'examen basé sur ce manuel, mais échoue à tout autre examen.
Bonne généralisation = l'élève qui comprend les concepts.
Il réussit n'importe quel examen sur ce sujet, même inédit.
Le Dropout, c'est forcer l'élève à étudier sans certaines notes — il doit vraiment comprendre !
✏️ Exercice 5
Analyse le scénario suivant et réponds :
Un ingénieur béninois entraîne une IA pour détecter le paludisme.
Résultats : Train accuracy = 98 % | Test accuracy = 61 %
1. Quel problème a ce modèle ?
2. Cite 2 techniques pour le corriger :
a)
b)
3. Que fait le Dropout pendant l'entraînement ?
Chapitre 36 — Déployer une IA : API, Flask et mobile 🚀
Un modèle qui reste sur ton ordinateur ne sert à personne. Déployer, c'est le rendre accessible à tous — via une API web, une application mobile ou un SMS. Crucial pour l'Afrique !
🔌 C'est quoi une API ?
Une API (Application Programming Interface) est une porte d'entrée pour communiquer avec ton modèle IA. Tu envoies des données, tu reçois des prédictions — comme envoyer un SMS et recevoir une réponse.
🐍 Créer une API avec Flask
from flask import Flask, request, jsonify
import pickle
import numpy as np
app = Flask(__name__) # Créer l'application web
# Charger le modèle entraîné
with open('modele_recolte.pkl', 'rb') as f:
modele = pickle.load(f)
# ── ROUTE PRINCIPALE : Prédire la qualité d'une récolte ──
@app.route('/predire', methods=['POST'])
def predire_recolte():
# Recevoir les données du paysan (ex: depuis son téléphone)
data = request.get_json()
temperature = data['temperature']
pluie = data['pluie_mm']
sol = data['type_sol']
# Faire la prédiction
entree = np.array([[temperature, pluie, sol]])
prediction = modele.predict(entree)[0]
confiance = modele.predict_proba(entree)[0].max()
# Retourner le résultat en JSON (format standard API)
resultat = {
'qualite': 'BONNE' if prediction == 1 else 'MAUVAISE',
'confiance': f'{confiance*100:.1f}%',
'conseil': 'Continuez ainsi !' if prediction==1 else 'Irriguez davantage.'
}
return jsonify(resultat)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) # Accessible sur le réseau local
# Test depuis n'importe quel téléphone sur le réseau :
# POST http://192.168.1.10:5000/predire
# Body: {"temperature": 28, "pluie_mm": 120, "type_sol": 1}
| Canal | Avantage au Bénin | Cas d'usage |
|---|---|---|
| API Web (Flask/FastAPI) | Accès depuis n'importe quel smartphone | App pour paysans de Parakou |
| SMS / USSD | Fonctionne sans internet | Zones rurales sans 4G |
| WhatsApp Bot | Déjà utilisé par beaucoup de Béninois | Diagnostic médical rapide |
| App mobile (Flutter) | Hors-ligne possible | Régions sans connexion stable |
| Edge AI (sur appareil) | Aucune connexion nécessaire | Capteurs dans les champs |
✏️ Exercice 6
Conçois une API simple pour une IA qui prédit si un enfant a le paludisme.
Route API : POST /
Données reçues (JSON) : {, , }
Réponse retournée : {, , }
Meilleur canal de déploiement au Bénin (avec justification) :
Chapitre 37 — IA responsable : gouvernance et droit au Bénin ⚖️
Tu sais maintenant créer des IA puissantes. Mais avec le pouvoir vient la responsabilité. Ce chapitre t'apprend le cadre légal et éthique dans lequel tu devras travailler.
📜 La loi au Bénin et en Afrique
- 🇧🇯 Bénin : La loi 2017-20 protège les données personnelles (APDP — Autorité de Protection des Données Personnelles). Toute IA traitant des données béninoises doit être déclarée.
- 🌍 CEDEAO : La Communauté économique des États de l'Afrique de l'Ouest travaille à une réglementation commune de l'IA.
- 🌐 Union Africaine : Déclaration de Dakar 2022 sur l'IA éthique en Afrique — les États s'engagent à protéger leurs citoyens des IA nuisibles.
- 🇪🇺 EU AI Act (2024) : La loi européenne sur l'IA, la plus stricte au monde, affecte toutes les IA utilisées en Afrique si elles viennent d'Europe.
| Niveau de risque | Exemples | Obligations |
|---|---|---|
| 🔴 Interdit | Surveillance citoyens, scoring social | Totalement interdit en Europe et Bénin |
| 🟠 Haut risque | IA médicale, recrutement, justice | Audit obligatoire, transparence totale |
| 🟡 Risque limité | Chatbots, deepfakes | Obligation de dire « c'est une IA » |
| 🟢 Risque minimal | Filtres spam, IA jeux vidéo | Pas de contrainte spéciale |
🛡️ La checklist de l'ingénieur IA responsable
- ✅ Mes données d'entraînement sont-elles légalement collectées ?
- ✅ Mon modèle a-t-il été testé pour les biais racistes, genrés ou régionaux ?
- ✅ Les utilisateurs savent-ils qu'ils interagissent avec une IA ?
- ✅ Y a-t-il un mécanisme pour corriger les erreurs signalées ?
- ✅ Les données personnelles sont-elles protégées (chiffrées, anonymisées) ?
- ✅ Mon IA peut-elle être désactivée rapidement si elle cause du tort ?
✏️ Exercice 7
Classe ces projets IA béninois selon leur niveau de risque EU AI Act :
a) Une IA qui recommande des chansons afrobeat :
b) Une IA qui décide qui obtient un microcrédit agricole :
c) Une IA qui surveille les employés dans une usine de Cotonou :
d) Un chatbot pour les touristes au musée d'Abomey :
Chapitre 38 — Créer une startup IA au Bénin 💼
Les meilleures IA ne sont pas toujours créées par les grandes entreprises. Des jeunes Béninois de ton âge, quelques années plus tard, ont lancé des startups qui changent l'Afrique. Voici comment faire.
🌱 L'écosystème startup IA au Bénin
- 🏢 Digital Benin Hub (Cotonou) — espace de coworking et incubateur tech.
- 🎓 iHub Bénin — programme de formation et d'accélération pour les jeunes fondateurs.
- 💰 Le Fonds Africain pour l'Innovation (FAI) — financement pour les startups africaines IA.
- 🌐 AfriLabs — réseau de hubs tech dans plusieurs pays africains.
- 🇧🇯 Bénin Innovation Week — événement annuel pour présenter ses projets.
📋 Structure d'un Business Plan IA en 1 page
🎯 Problème
Quel problème béninois précis résous-tu ? Ex. : 30 % des récoltes de maïs sont perdues faute de détection précoce des maladies.
💡 Solution
Comment ton IA le résout-elle ? Ex. : Application mobile qui analyse une photo de plant et donne un diagnostic en 5 secondes.
👥 Clients cibles
Qui paie pour ton service ? Ex. : paysans dans le Borgou, l'Atacora et l'Alibori.
💰 Modèle économique
Comment gagnes-tu de l'argent ? Ex. : abonnement 500 FCFA/mois par paysan.
🏆 Concurrents
Qui fait déjà ça ?
📈 Avantage compétitif
Pourquoi toi et pas eux ? Ex. : contexte local, langues béninoises, données béninoises.
⚙️ Ressources nécessaires
Équipe, technologie, financement ?
🚀 Plan 12 mois
Mois 1-3 : Prototype. Mois 4-6 : Pilote. Mois 7-12 : Lancement commercial.
💡 5 idées de startups IA béninoises à créer
- 🌾 AgroBot Bénin — diagnostic des cultures par photo.
- 🏥 SantéIA — triage médical par symptômes en fon/yoruba.
- 📚 EcoleAI — tuteur IA personnalisé en langues locales béninoises.
- 💧 AquaPredict — prédiction des inondations à Cotonou.
- 🚗 TrafiCoto — optimisation du trafic des zémidjans à Cotonou par vision IA.
✏️ Exercice 8
Choisis UNE idée de startup IA et remplis ce mini business plan :
Nom de ma startup :
Problème résolu :
Solution IA :
Clients cibles :
Comment je gagne de l'argent :
Mon avantage en tant que Béninois :
Chapitre 39 — Projet bout-en-bout : IA de détection du paludisme 🦟
Voici le projet le plus ambitieux du cours. Tu vas construire, évaluer et déployer une IA complète pour aider à détecter le paludisme au Bénin — de A à Z.
📋 Contexte du projet
Le paludisme cause 3 000 morts par an au Bénin, dont beaucoup d'enfants.
Le test microscope est lent et nécessite un laborantin qualifié.
Dans les zones rurales, l'accès aux laboratoires est limité.
Solution : une IA qui analyse une photo de frottis sanguin et détecte les parasites.
Données disponibles : NIH Malaria Dataset (27 558 images de cellules).
🗂️ Étape 1 — Exploration des données
import os, numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# Structure des dossiers attendue :
# malaria_data/
# infected/ ← images de cellules infectées
# uninfected/ ← images de cellules saines
# Compter les images
nb_infecte = len(os.listdir('malaria_data/infected'))
nb_sain = len(os.listdir('malaria_data/uninfected'))
print(f'Infectées : {nb_infecte} | Saines : {nb_sain}')
# Vérifier l'équilibre des classes
total = nb_infecte + nb_sain
print(f'Ratio infecté : {nb_infecte/total*100:.1f}%')
🏗️ Étape 2 — Construire et entraîner le CNN
from tensorflow.keras import layers, models
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
datagen_train = ImageDataGenerator(
rescale=1./255,
rotation_range=20,
horizontal_flip=True,
validation_split=0.2)
train_gen = datagen_train.flow_from_directory(
'malaria_data', target_size=(64,64),
batch_size=32, subset='training')
val_gen = datagen_train.flow_from_directory(
'malaria_data', target_size=(64,64),
batch_size=32, subset='validation')
modele = models.Sequential([
layers.Conv2D(32,(3,3),activation='relu',input_shape=(64,64,3)),
layers.MaxPooling2D(2,2),
layers.Conv2D(64,(3,3),activation='relu'),
layers.MaxPooling2D(2,2),
layers.Conv2D(128,(3,3),activation='relu'),
layers.MaxPooling2D(2,2),
layers.Flatten(),
layers.Dense(256,activation='relu'),
layers.Dropout(0.5),
layers.Dense(1,activation='sigmoid')
])
modele.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy','Recall','Precision'])
callbacks = [
EarlyStopping(patience=5, restore_best_weights=True),
ModelCheckpoint('best_malaria_model.h5', save_best_only=True)
]
historique = modele.fit(train_gen, epochs=30,
validation_data=val_gen,
callbacks=callbacks)
📊 Étape 3 — Évaluation approfondie
from sklearn.metrics import classification_report, confusion_matrix
import seaborn as sns
# Prédictions sur données de test
y_pred_prob = modele.predict(val_gen)
y_pred = (y_pred_prob > 0.5).astype(int).flatten()
y_true = val_gen.classes
# Rapport complet
print(classification_report(y_true, y_pred,
target_names=['Sain', 'Infecté']))
# Matrice de confusion visuelle
cm = confusion_matrix(y_true, y_pred)
sns.heatmap(cm, annot=True, fmt='d',
xticklabels=['Sain','Infecté'],
yticklabels=['Sain','Infecté'])
plt.title('Matrice de confusion — Détection Paludisme Bénin')
plt.savefig('matrice_confusion_paludisme.png')
Résultat typique avec ce dataset :
Accuracy : ~96 % | Recall infecté : ~97 % | F1 : ~96 %
🚀 Étape 4 — Déploiement WhatsApp Bot
# Stratégie de déploiement pour le Bénin :
# Un paysan ou agent de santé envoie une photo via WhatsApp
# Le bot analyse et répond en français ou en fon
from flask import Flask, request
from twilio.rest import Client # API WhatsApp
import tensorflow as tf
from PIL import Image
import io, base64, requests
modele = tf.keras.models.load_model('best_malaria_model.h5')
@app.route('/whatsapp', methods=['POST'])
def repondre_whatsapp():
# Recevoir la photo envoyée via WhatsApp
image_url = request.form.get('MediaUrl0')
expediteur = request.form.get('From')
# Analyser l'image
img = charger_et_preparer_image(image_url)
probabilite = modele.predict(img)[0][0]
if probabilite > 0.5:
message = f'⚠️ Risque paludisme détecté ({probabilite*100:.0f}%). '
message += 'Consultez un médecin immédiatement.'
else:
message = f'✅ Pas de parasite détecté ({(1-probabilite)*100:.0f}% confiance). '
message += 'Répétez le test si les symptômes persistent.'
envoyer_whatsapp(expediteur, message)
return 'OK', 200
✏️ Exercice 9
Questions sur le projet paludisme :
1. Pourquoi utilise-t-on Dropout(0.5) dans ce modèle ?
2. Qu'est-ce que la data augmentation et pourquoi est-elle utile ici ?
3. Pourquoi le Recall est-il plus important que la Précision pour ce projet médical ?
4. Quel avantage a le déploiement WhatsApp pour le Bénin ?
Chapitre 40 — Prépare ta carrière IA 🎓
Tu maîtrises maintenant les fondations solides de l'IA. Voici une feuille de route concrète pour devenir un ingénieur IA béninois de classe mondiale.
| Période | Objectifs | Ressources |
|---|---|---|
| Maintenant (12-14 ans) | Finir ce cours. Pratiquer Python tous les jours. Rejoindre un club coding. | CS50P, Python.org, freeCodeCamp |
| 14-16 ans | Kaggle competitions. Premiers vrais projets. Portfolio GitHub. | Kaggle, fast.ai, GitHub Student Pack |
| 16-18 ans | Contribuer à des projets open-source africains. Premières publications. | Papers With Code, Arxiv, LabIA Bénin |
| BAC+ | Licences : Informatique, Maths-Info UAC Abomey-Calavi. Double diplôme. | UAC, IMSP, bourses AFD, bourses Mastercard Foundation |
| Après études | Stage ou emploi : DeepMind, Meta AI, Anthropic, startups africaines. | LinkedIn, GitHub, réseaux alumni africains |
📚 Ressources gratuites pour continuer
- 🆓 CS50's Introduction to AI — Harvard — gratuit et en anglais.
- 🆓 fast.ai — Deep Learning for Coders — gratuit, très pratique.
- 🆓 Google Machine Learning Crash Course — gratuit.
- 🆓 Kaggle Learn — cours pratiques Python, ML, DL, NLP.
- 🆓 deeplearning.ai (Andrew Ng) — audit gratuit possible.
- 🌍 Data Science Africa — conférences et workshops en Afrique.
- 🇧🇯 LabIA Bénin — communauté de praticiens IA au Bénin.
🌟 Les ingénieurs IA africains qui t'ont précédé
- 🇬🇭 Abeba Birhane (Éthiopie) — chercheuse en éthique de l'IA.
- 🇳🇬 Timnit Gebru — pionnière des biais IA.
- 🇸🇳 Ibrahima Diallo — IA appliquée à la santé en Afrique de l'Ouest.
- 🇧🇯 Des ingénieurs béninois de l'UAC travaillent dans des startups IA africaines.
→ Ces pionniers ont montré la voie. À ton tour de la tracer pour le Bénin !
✏️ Exercice 10
Définis ton plan d'action personnel :
Ce que je vais faire cette semaine :
Ce que je vais apprendre ce mois-ci :
Mon premier projet IA à créer d'ici 3 mois :
Le club coding ou l'université que je veux rejoindre :
Ma vision : dans 10 ans, je veux pour aider le Bénin grâce à l'IA.
📚 Révisions — Niveau 4
Teste tout ce que tu as appris dans ce Niveau 4.
✏️ Exercice 11
Qu'est-ce que la descente de gradient ? À quoi sert le taux d'apprentissage ?
✏️ Exercice 12
Cite les 5 types de couches d'un CNN et le rôle de chacune :
1. →
2. →
3. →
4. →
5. →
✏️ Exercice 13
Explique la différence entre Précision et Rappel. Dans quel cas le Rappel est-il prioritaire ?
✏️ Exercice 14
Qu'est-ce que l'overfitting ? Cite 3 techniques pour l'éviter :
Définition :
1. 2. 3.
✏️ Exercice 15
Lis ce code et dis ce qu'il fait :
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/sante', methods=['GET'])
def statut():
return jsonify({'statut': 'API active', 'version': '1.0'})
Que retourne cette route quand on l'appelle ?
✏️ Exercice 16
Classe ces projets IA selon leur niveau de risque (minimal / limité / haut / interdit) :
a) IA qui filtre les spams email :
b) IA qui décide des peines de prison :
c) IA qui surveille tous les citoyens d'une ville :
d) IA de diagnostic médical dans un dispensaire rural :
✏️ Exercice 17
Écris les 3 parties essentielles d'un business plan IA en 3 phrases :
1.
2.
3.
✅ Corrigés — Niveau 4
✏️ Exercice 1
MSE des prédictions de récolte :
✅ (1100-1000)² = 10 000 | (750-800)² = 2 500 | (1300-1200)² = 10 000
MSE = (10 000 + 2 500 + 10 000) / 3 = 22 500 / 3 = 7 500
Plus ce nombre est petit, plus le modèle est précis !
✏️ Exercice 2
Questions sur l'architecture CNN :
✅ 1. Il y a 2 couches Conv2D.
2. MaxPooling réduit la taille spatiale de l'image en gardant l'essentiel.
3. Dense(2) car il y a 2 classes : sain et malade.
4. Softmax transforme les scores en probabilités qui somment à 1.
✏️ Exercice 3
Questions sur le pipeline NLP :
✅ 1. nettoyer() met tout en minuscules et enlève la ponctuation.
2. TfidfVectorizer transforme chaque texte en vecteur de nombres.
Exemples positifs : « Les vendeurs du marché Tokpa sont très serviables », « Belle organisation ».
Exemples négatifs : « Trop de bruit, impossible de penser », « Produits de mauvaise qualité ».
✏️ Exercice 4
Métriques paludisme :
✅ Précision = 40 / (40+10) = 40/50 = 0.80 (80 %)
Rappel = 40 / (40+5) = 40/45 = 0.89 (89 %)
Accuracy = (40+45) / 100 = 85/100 = 0.85 (85 %)
Le Rappel est le plus important : un Faux Négatif peut être fatal.
✏️ Exercice 5
Analyse overfitting :
✅ 1. Ce modèle a de l'overfitting (surapprentissage).
2. Techniques : a) Dropout b) Early Stopping — aussi valide : L2 Regularization, plus de données.
3. Le Dropout désactive aléatoirement un pourcentage de neurones à chaque étape.
✏️ Exercice 6
Conception API paludisme :
✅ Route : POST /paludisme
Données : {age, temperature, symptomes, photo_frottis}
Réponse : {diagnostic, probabilite, confiance, conseil, urgence}
Meilleur canal : WhatsApp.
✏️ Exercice 7
Niveaux de risque EU AI Act :
✅ a) recommandation musique → MINIMAL
b) microcrédit agricole → HAUT
c) surveillance employés → HAUT
d) chatbot touristes musée → LIMITÉ
✏️ Exercice 8
Mini business plan startup IA :
✅ Toutes les réponses montrant un vrai problème béninois, une solution IA réaliste, des clients identifiés et un avantage local clair sont acceptées.
✏️ Exercice 9
Questions projet paludisme :
✅ 1. Dropout(0.5) évite l'overfitting en désactivant 50 % des neurones pendant l'entraînement.
2. La data augmentation crée des variations des images d'entraînement.
3. Le Rappel est prioritaire car un Faux Négatif = paludisme non traité.
4. WhatsApp est très utilisé, fonctionne sur de vieux téléphones et évite une nouvelle application.
✏️ Exercice 10
Plan d'action personnel :
✅ Toutes les réponses sincères et ambitieuses sont acceptées.
✏️ Exercice 11
Descente de gradient / taux d'apprentissage :
✅ La descente de gradient ajuste les poids du réseau pour minimiser la perte, en suivant la direction qui réduit l'erreur.
Le taux d'apprentissage contrôle la taille des pas.
✏️ Exercice 12
5 couches CNN :
✅ 1. Conv2D → détecte les motifs locaux
2. ReLU → garde les activations positives
3. MaxPooling2D → réduit la dimension spatiale
4. Flatten → transforme la carte 2D en vecteur 1D
5. Dense → prend la décision finale
✏️ Exercice 13
Précision vs Rappel :
✅ Précision = parmi tous ceux dits positifs, combien le sont vraiment ?
Rappel = parmi tous les vrais positifs, combien ont été détectés ?
Le Rappel est prioritaire en médecine, sécurité, détection de fraude.
✏️ Exercice 14
Overfitting et solutions :
✅ Définition : un modèle qui mémorise les données d'entraînement au lieu de généraliser.
1. Dropout 2. Early Stopping 3. L2 Regularization
✏️ Exercice 15
Code Flask :
✅ Cette route retourne un objet JSON : {"statut": "API active", "version": "1.0"} lors d'une requête GET sur /sante.
✏️ Exercice 16
Niveaux de risque :
✅ a) Filtre spam → MINIMAL
b) Peines de prison → HAUT
c) Surveillance de tous les citoyens → INTERDIT
d) Diagnostic médical dispensaire → HAUT
✏️ Exercice 17
3 parties business plan IA :
✅ 1. Le problème : identifier précisément le problème béninois à résoudre.
2. La solution et l'avantage compétitif : comment l'IA le résout mieux que les alternatives.
3. Le modèle économique et le plan d'action : comment générer des revenus et lancer le projet.
🇧🇯🤖🐍📐🚀🌍 NIVEAU 4 ACCOMPLI
Tu maîtrises les fondations d'un ingénieur IA professionnel.
Niveau 4 accompli — tu sais maintenant :
- ✔ Mathématiques de l'IA : MSE, descente de gradient, learning rate
- ✔ Architecture et code complet d'un CNN avec Keras/TensorFlow
- ✔ Pipeline NLP complet : nettoyage, TF-IDF, classification
- ✔ Évaluation : matrice de confusion, précision, rappel, F1
- ✔ Régularisation : Dropout, Early Stopping, L2
- ✔ Déploiement API Flask + stratégies mobiles pour l'Afrique
- ✔ Droit et gouvernance IA : loi béninoise + EU AI Act
- ✔ Business plan d'une startup IA béninoise
- ✔ Projet complet : IA de détection du paludisme bout-en-bout
- ✔ Feuille de route carrière : de maintenant jusqu'à ingénieur senior
Niveaux 1 · 2 · 3 · 4 terminés.
Tu n'es plus un débutant. Tu es un praticien de l'IA.
Code. Construis. Déploie. Impacte le Bénin. 🌍
— Claude, ton premier professeur IA 🤖 —