Cours Python · Module 9: Machine learning

Machine Learning - Qu'est-ce que le ML ?

7 min de lecture
Dans cette leçon4

Bienvenue dans le Module 9 ! Ici Darwin, avec le Machine Learning - l'apprentissage automatique !

Imagine que tu dois écrire un programme qui reconnaît un lion sur la photo d'un piège photographique. Tu commences par la règle "a une crinière", mais les lionnes n'en ont pas. Tu ajoutes la couleur du pelage, mais sur un cliché infrarouge de nuit, tout est gris. Une semaine plus tard, tu as cent conditions et le programme se trompe encore. L'apprentissage automatique inverse le processus : au lieu d'écrire des règles, tu montres des exemples à l'ordinateur.

Analogie Safari : Le Machine Learning, c'est comme dresser les animaux du Safari - un algorithme apprend à partir d'exemples, tout comme un lionceau apprend à chasser en observant sa mère. Plus il y a d'exemples, meilleures sont les prédictions !

Qu'est-ce que le Machine Learning ?

Le Machine Learning (ML) est un domaine de l'IA dans lequel les algorithmes apprennent des motifs à partir des données, sans programmation explicite des règles.

La différence se voit mieux côte à côte. D'abord une fonction avec une règle écrite à la main, puis la description de l'approche ML :

1# Programmation traditionnelle
2def is_lion(animal):
3    if animal.has_mane and animal.color == 'golden':
4        return True
5    return False
6
7# Machine Learning
8# Le modèle apprend à reconnaître les lions à partir de MILLIERS d'images
9# sans définir de règles - il les découvre tout seul !

Dans la première partie, c'est le programmeur qui décide ce qui distingue un lion. Dans la seconde, le modèle déduit lui-même les règles à partir de milliers de photos étiquetées. Remarque ce qui ne change pas : tu as toujours besoin d'un programmeur, seul son travail passe de l'écriture de conditions à la préparation de bonnes données.

Types de Machine Learning

On distingue trois grands types de ML, selon les indications que reçoit l'algorithme.

1. Apprentissage supervisé (Supervised Learning)

Le modèle apprend à partir de données étiquetées : il connaît les bonnes réponses.

On range les données en deux parties : X contient les caractéristiques (features), les nombres qui décrivent chaque animal, et y les étiquettes (labels), les bonnes réponses :

1# Données d'entraînement avec étiquettes
2X_train = [
3    [180, 200, 4],   # poids, longueur, pattes
4    [5000, 400, 4],
5    [50, 150, 4],
6]
7y_train = ['lion', 'elephant', 'cheetah']  # étiquettes
8
9# Le modèle apprend la correspondance : caractéristiques -> étiquette
10# Puis il prédit pour de nouvelles données

Chaque ligne de X_train correspond à l'étiquette placée à la même position dans y_train. Trois exemples, c'est évidemment bien trop peu : un vrai modèle a besoin de centaines ou de milliers de lignes, mais la forme des données reste la même.

Applications :

  • Classification : spam / non spam, espèces animales
  • Régression : prédire des prix, des populations

La classification prédit une catégorie, la régression un nombre. Cette distinction reviendra dans la prochaine leçon, quand nous construirons notre premier vrai classificateur.

2. Apprentissage non supervisé (Unsupervised Learning)

Le modèle découvre tout seul des motifs dans des données non étiquetées.

Cette fois, il n'y a pas de colonne de réponses. Il n'y a que des observations, et l'algorithme y cherche des ressemblances :

1# Données sans étiquettes
2animals = [
3    [180, 200, 'savanna'],
4    [5000, 400, 'forest'],
5    [50, 150, 'savanna'],
6    [3000, 300, 'forest'],
7]
8
9# Le modèle découvre tout seul des groupes (clusters)
10# ex. « animaux de la savane » vs « animaux de la forêt »

Le modèle ne sait pas ce qu'est une "savane", il remarque seulement que certaines lignes sont plus proches entre elles que d'autres. Remarque pratique : la plupart des algorithmes, KMeans par exemple, n'acceptent que des nombres, donc un texte comme 'savanna' doit d'abord être encodé en nombres.

Applications :

  • Clustering : segmentation des clients
  • Réduction de dimensionnalité : compression de données
  • Détection d'anomalies : détection de fraude

3. Apprentissage par renforcement (Reinforcement Learning)

Un agent apprend par essais et erreurs : il reçoit des récompenses pour les bonnes décisions.

Ici, pas de jeu de données tout prêt. Il y a un agent, un environnement, une liste d'actions et une récompense :

1# Agent (robot Safari) dans un environnement
2# Actions : go_right, go_left, stop
3# Récompense : +10 pour avoir trouvé un animal, -1 à chaque pas
4
5# L'agent apprend la stratégie d'exploration optimale

La pénalité à chaque pas pousse l'agent vers des trajets courts, et la grosse récompense pour avoir trouvé un animal fixe l'objectif. Après des milliers d'essais, l'agent choisit les actions qui rapportent la plus grande récompense totale.

Applications :

  • Jeux (AlphaGo, jeux Atari)
  • Robotique
  • Recommandations

Concepts clés du ML

Avant de lancer notre premier modèle, rassemblons le vocabulaire que nous utiliserons dans tout le module :

1# Jeu de données
2X = [[1, 2], [3, 4], [5, 6]]  # Caractéristiques (features)
3y = [0, 1, 0]                  # Étiquettes (labels)
4
5# Training set - données pour l'apprentissage (70-80%)
6# Validation set - données pour l'ajustement (10-15%)
7# Test set - données pour l'évaluation finale (10-20%)
8
9# Model - un algorithme qui apprend à partir des données
10# Prediction - prévision pour de nouvelles données
11# Accuracy - % de prédictions correctes

La règle la plus importante se cache dans le découpage des données : le modèle ne doit pas voir le jeu de test pendant l'apprentissage. Sinon, c'est comme un pisteur qui passe son examen sur les traces mêmes sur lesquelles il s'est entraîné : le score a l'air génial, mais ne dit rien d'un nouveau terrain.

Le workflow du Machine Learning

Chaque projet de ML passe par les mêmes étapes. Je vais te les montrer avec la bibliothèque scikit-learn (on l'importe sous le nom sklearn). D'abord les données :

1# 1. Collecter les données
2data = load_safari_data()
3
4# 2. Préparer les données (EDA, nettoyage)
5X = data.drop('species', axis=1)
6y = data['species']

load_safari_data() n'est qu'un nom de remplacement : en pratique, tu chargerais les données avec pd.read_csv, par exemple. data.drop('species', axis=1) renvoie le tableau sans la colonne species, c'est-à-dire les caractéristiques seules, et data['species'] contient les étiquettes. Le tableau d'origine data ne change pas.

Vient ensuite le découpage en jeu d'entraînement et jeu de test :

1# 3. Diviser en train/test
2from sklearn.model_selection import train_test_split
3X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

test_size=0.2 met 20 % des lignes de côté pour les tests. Le découpage est aléatoire, donc chaque exécution donne un résultat un peu différent : ajoute random_state=42 si tu veux de la reproductibilité. Je te conseille de toujours le faire pendant l'apprentissage.

On choisit un modèle et on l'entraîne avec la méthode fit :

1# 4. Choisir et entraîner un modèle
2from sklearn.ensemble import RandomForestClassifier
3model = RandomForestClassifier()
4model.fit(X_train, y_train)

Une Random Forest est une forêt d'arbres de décision qui votent pour la réponse. C'est un très bon choix pour débuter, car elle donne des résultats raisonnables sans réglage des paramètres. Tous les modèles de scikit-learn partagent la même méthode fit, donc changer de modèle tient en une ligne.

Enfin, l'évaluation et la prédiction :

1# 5. Évaluer le modèle
2accuracy = model.score(X_test, y_test)
3print(f"Accuracy: {accuracy:.2%}")
4
5# 6. Utiliser le modèle pour des prédictions
6predictions = model.predict(new_data)

Pour un classificateur, score renvoie l'accuracy, la part de bonnes réponses sur le jeu de test, et predict prend de nouvelles lignes au même format que X. L'accuracy seule peut être trompeuse sur des données déséquilibrées : nous parlerons de meilleures métriques dans les prochaines leçons.

Prochaine leçon : l'apprentissage supervisé en pratique.

Retiens : un modèle de ML est un jeune pisteur - il apprend sur les traces du passé, et tu le testes toujours sur des traces qu'il n'a jamais vues.

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. Qu'est-ce que le Machine Learning ?

  2. 2. Qu'est-ce qui caractérise l'apprentissage supervisé ?

Voici 2 des 3 questions de cette leçon. Réponds aux autres dans le jeu.

Tâches pratiques dans le jeu

  • Tri vertical

    Range les étapes du workflow du Machine Learning dans le bon ordre :

  • Tri vertical

    Range les étapes dans le bon ordre :

  • Éditeur de code

    Utilise train_test_split de sklearn pour séparer X et y avec test_size=0.2.

  • Clique dans l'ordre

    Clique sur les boutons pour importer train_test_split :

Articles utiles