Machine Learning 🤖
Le Machine Learning (apprentissage automatique), c'est comme apprendre à un enfant : tu lui montres des exemples, et il finit par comprendre tout seul !
1. Apprendre à partir des données 📊
Exécution pas à pas pseudo 1 ' Machine Learning = programme qui APPREND à partir d'exemples2 ' Au lieu d'écrire des règles, on donne des EXEMPLES3 4 ' Exemple : apprendre à reconnaître un chat 🐱5 ' Étape 1 : montrer 1000 photos de chats et 1000 photos de chiens6 ' Étape 2 : le modèle trouve TOUT SEUL les différences7 ' Étape 3 : on teste avec une nouvelle photo → "C'est un chat !"8 ``'9 10 ---11 12 ## 2. Les 3 types d'apprentissage 📚13 14 pseudo15 ' Classification = prédire une CATÉGORIE16 ' Exemple : identifier le type de fleur (iris)17 18 ' Les données d'entraînement :19 ' [longueur_pétale, largeur_pétale, longueur_sépale, largeur_sépale] → espèce20 ' [5.1, 3.5, 1.4, 0.2] → setosa21 ' [7.0, 3.2, 4.7, 1.4] → versicolor22 ' [6.3, 3.3, 6.0, 2.5] → virginica23 24 ' On donne 80% des données pour apprendre, 20% pour tester25 ' Le modèle prédit l'espèce pour une nouvelle fleur !26 ``'27 28 ```python29 # Classification d'iris (fleurs)30 from sklearn.datasets import load_iris31 from sklearn.model_selection import train_test_split32 from sklearn.neighbors import KNeighborsClassifier33 from sklearn.metrics import accuracy_score34 35 # Chargement des données36 iris = load_iris()37 X, y = iris.data, iris.target38 39 # Division train / test40 X_train, X_test, y_train, y_test = train_test_split(41 X, y, test_size=0.2, random_state=4242 )43 44 # Création et entraînement du modèle45 model = KNeighborsClassifier(n_neighbors=3)46 model.fit(X_train, y_train)47 48 # Prédiction et évaluation49 predictions = model.predict(X_test)50 print(f"Précision : {accuracy_score(y_test, predictions):.2f}")51 # Précision : 1.00 (100%)52 ``'53 54 ---55 56 ## 4. Régression linéaire 📈57 58 ```pseudo59 ' Régression = prédire une VALEUR (pas une catégorie)60 ' Exemple : prédire le prix d'une maison selon sa surface61 62 ' On a des données : [surface] → [prix]63 ' [30] → [120k€], [50] → [200k€], [100] → [400k€]64 65 ' Le modèle trouve la RELATION : prix = surface × 466 ' Pour 85m² : 85 × 4 = 340k€ !67 ' (C'est une droite dans un graphique 📈)68 ``'69 70 ```python71 # Prédire le prix d'une maison selon sa surface72 from sklearn.linear_model import LinearRegression73 74 # Données : surface (m²), prix (k€)75 surfaces = [[30], [50], [70], [100], [150]]76 prix = [120, 200, 280, 400, 600]77 78 model = LinearRegression()79 model.fit(surfaces, prix)80 81 maison = [[85]]82 prix_pred = model.predict(maison)83 print(f"85m² → {prix_pred[0]:.0f} k€")84 ``'85 86 ---87 88 ## 5. Le processus ML complet 🔄89 90 pseudo91 ' Deux problèmes courants :92 93 ' UNDERFITTING (sous-apprentissage) :94 ' Le modèle n'a pas assez appris → mauvais partout95 ' Solution : modèle plus complexe, plus de données96 97 ' OVERFITTING (surapprentissage) :98 ' Le modèle a trop appris PAR CŒUR → excellent en test,99 ' mais nul sur de nouvelles données100 ' Solution : limiter la complexité, régularisation101 ``'102 103 | Problème | Signe | Solution |104 |----------|-------|----------|105 | **Underfitting** | Mauvais sur train + test | Modèle plus complexe |106 | **Overfitting** | Parfait sur train, mauvais sur test | Régularisation, plus de données |107 108 ```python109 from sklearn.ensemble import RandomForestClassifier110 111 # Forêt aléatoire : moins de surapprentissage112 model = RandomForestClassifier(113 n_estimators=100,114 max_depth=10, # Limite la profondeur115 min_samples_split=5, # Évite les feuilles trop spécifiques116 )117
▶️ ' Machine Learning = programme qui APPREND à partir d'exemples
⚙️ ' Machine Learning = programme qui APPREND à partir d'exemples Le programme exécute cette action, puis passe à la suivante. Le programme exécute cette instruction, puis passe à la suivante.
Exercices pour toi 🎯
Classification : avec les données Iris, essaie différents classifieurs (KNN, Decision Tree, Random Forest) et compare leur précision
Régression : avec les données de surface/prix, prédis le prix pour 200m² — est-ce que la relation linéaire tient toujours ?
Overfitting : entraîne un arbre de décision SANS limite de profondeur et observe la différence entre précision train et test
Exécution pas à pas 80% 20% Non Oui Début
Collecte de
données
Division :
Train / Test
Train (80%)
+ labels Évaluation
sur test
Apprentissage
(pattern) Performance
suffisante ?
Déploiement
Fin
État de la mémoire 3 variables Variable
Valeur
Type
Addr.
train_set
800 samples
dataset
0x5100
test_set
200 samples
dataset
0x5110
Aucune variable active
train_set 0x5100
800 samples
dataset
test_set 0x5110
200 samples
dataset
⚡ Simulateur — Machine Learning Étape 1/9 📝 Pseudo-code ligne suivante →
1 Pipeline Machine Learning :
2 1. 📊 Collecte de données # ⬅ 1000 emails
3 2. 🧹 Nettoyage # ⬅ supprimer doublons
4 3. 🔀 Division train/test # ⬅ 80% / 20%
5 4. 🤖 Choix du modèle # ⬅ KNN, RandomForest...
6 5. 🏋️ Entraînement (fit) # ⬅ le modèle apprend
7 6. 📏 Évaluation # ⬅ test sur 20%
8 7. 🚀 Déploiement # ⬅ en production
9
10 Types d'apprentissage :
11 Supervisé 📝 · Non supervisé 🔍 · Renforcement 🎮 # ⬅ comparer
🤖 Pipeline Machine Learning
💡 Pipeline ML
Données → Nettoyage → Division → Modèle → Test → Déploiement Les données de test ne sont jamais vues pendant l'entraînement Si performance insuffisante, on retourne à l'étape de choix du modèle 💡 Le pipeline ML est le processus complet pour créer un modèle prédictif.