News
- 2025-09-23 Premier cours du semestre le 24/09/2025
Infos pratiques
- Quoi « Apprentissage artificiel »
- Où Salle R06, BFC
- Quand 8 séances, les mercredi de 9:30 à 12:30, du 24/09 au ??/11
- Voir le planning pour les dates exactes
- Contact L. Grobol lgrobol@parisnanterre.fr
- Évaluation Un TP noté (date à déterminer) et un projet
Liens utiles
- Prendre rendez-vous pour des office hours en visio :
mon calendrier
- Lien Binder de secours :

Séances
Les liens dans chaque séance vous permettent de télécharger les fichiers .ipynb
à utiliser (et
données additionnelles éventuelles). Attention: pour les utiliser en local il faudra installer les
packages du requirements.txt
(dans un environnement virtuel). Si vous ne savez pas comment faire,
allez voir « Utilisation en local »
Les notebooks ci-dessous ont tous des liens Binder pour une utilisation interactive
sans rien installer.
2025-09-24 : Outils de travail
2025-09-31 : Intuitions et vocabulaire
2025-10-08 : Évaluation de modèles, sur- et sous-apprentissage
- À lire sur les splits train/dev/test : Goot, Rob van der. 2021. ‘We Need to Talk About
Train-Dev-Test Splits’. Proceedings of the 2021
Conference on Empirical Methods in Natural Language Processing, November, 4485–94..
TP : full autonomie ! Préparez un notebook (avec du code et du texte) où vous utiliserez le
scikit-learn sur le jeu de données 20
newsgroups (récupérez
le pré-vectorisé en Tf⋅Idf avec
sklearn.datasets.fetch_20newsgroups_vectorized
)
pour étudier les capacités de quelques classifieurs.
- Présenter rapidement le jeu de données (origine, composition, quelques stats descriptives). Vous
devriez probablement aller chercher dans la doc d’où proviennent les données et aller examiner
leur contenu (quand on fait de la classification de textes, c’est souvent utile de regarder les
textes en question!).
- Entraîner des arbres de
décision
en faisant varier la profondeur pour étudier dans quelle mesure ils sous-apprennent quand la
profondeur est trop faible et déterminer à partir de quand ils surapprennent. Penser à la
validation croisée, penser à faire des courbes d’apprentissage, penser à visualiser les arbres,
penser à regarder les matrices de confusion, chercher dans les métriques de
scikit-learn
celles qui pourraient être intéressantes.
- Étudier l’influence de la taille du corpus d’apprentissage (mêmes indices)
- Si vous ne l’avez pas déjà fait, allez voir dans la doc à quoi sert le paramètre
remove
de
fetch_20newsgroups_vectorized
,
et reprenez vos expériences en le modifiant.
- Même jeu avec un
perceptron,
en étudiant l’influence du paramètre
max_iter
(commencer à 1)
Si vous voulez que j’y jette un œil, envoyez à lgrobol@parisnanterre.fr
avec en objet [ML2025] TP
Overfit
.
2025-10-14 : Régression logistique et descente de gradient
Utilisation en local
Environnements virtuels et packages
Je cite le Crash course Python:
- Les environnements virtuels sont des installations isolées de Python. Ils vous permettent d’avoir
des versions indépendantes de Python et des packages que vous installez
- Gérez vos environnements et vos packages avec uv. Installez-le,
lisez la doc.
- Pour créer un environnement virtuel :
uv venv /chemin/vers/…
- La convention, c’est
uv venv .venv
, ce qui créée un dossier (caché par défaut sous Linux et Mac
OS car son nom commence par .
) : .venv
dans le dossier courant (habituellement le dossier
principal de votre projet). Donc faites ça.
- Il est obligatoire de travailler dans un environnement virtuel. L’idéal est d’en avoir un
par cours, un par projet, etc.
- uv est assez précautionneux avec l’espace disque, il y a donc assez peu de désavantage à avoir
beaucoup d’environnements virtuels.
- Un environnement virtuel doit être activé avant de s’en servir. Concrètement ça remplace la
commande
python
de votre système par celle de l’environnement.
- Dans Bash par exemple, ça se fait avec
source .venv/bin/activate
(en remplaçant par le
chemin de l’environnement s’il est différent)
deactivate
pour le désactiver et rétablir votre commande python
. À faire avant d’en
activer un autre.
- On installe des packages avec
uv pip
ou python -m pip
(mais plutôt uv pip
, et jamais juste
pip
).
uv pip install numpy
pour installer Numpy.
- Si vous avez un fichier avec un nom de package par ligne (par exemple le
requirements.txt
du cours) : uv pip install -U -r requirements.txt
- Le flag
-U
ou --upgrade
sert à mettre à jour les packages si possible : uv pip install -U
numpy
etc.
- Je répète : on installe uniquement dans un environnement virtuel, on garde ses environnements bien
séparés (un par cours, pas un pour tout le M2).
- Dans un projet, on note dans un
requirements.txt
(ou .lst
) les packages dont le projet a
besoin pour fonctionner.
- Les environnements doivent être légers : ça ne doit pas être un problème de les effacer, de les
recréer… Si vous ne savez pas recréer un environnement que vous auriez perdu, c’est qu’il y a un
problème dans votre façon de les gérer.
- Si vous voulez en savoir plus, et je recommande très fortement de vouloir en savoir plus, c’est
vital de connaître ses outils de travail, il faut : lire les documentations de tous les
outils et toutes les commandes que vous utilisez.
Maintenant à vous de jouer :
- Installez uv
- Créez un dossier pour ce cours
- Dans ce dossier, créez un environnement virtuel nommé
.venv
- Activez-le
- Téléchargez le
requirements.txt
et installez les packages qu’il liste
Notebooks Jupyter
Si vous avez une installation propre (par exemple en suivant les étapes précédentes), vous pouvez
facilement ouvrir les notebooks du cours :
- Téléchargez le notebook du Crash course Python et
mettez-le dans le dossier que vous utilisez pour ce cours.
- Dans un terminal (avec votre environnement virtuel activé) lancez jupyter avec
jupyter notebook
python_crash_course.py.ipynb
.
- Votre navigateur devrait s’ouvrir directement sur le notebook. Si ça ne marche pas, le terminal
vous donne dans tous les cas un lien à suivre.
Alternativement, des IDE comme vscode permettent d’ouvrir directement les fichiers ipynb. Pensez à
lui préciser que le kernel a utiliser est celui de votre environnement virtuel s’il ne le trouve pas
tout seul.
Utilisation avancée
Vous pouvez aussi (mais je ne le recommande pas forcément car ce sera plus compliqué pour vous de le
maintenir à jour) cloner le dépôt du
cours. Tous les supports y sont, sous forme
de fichiers Markdown assez standards, qui devraient se visualiser correctement sur la plupart des
plateformes. Pour les utiliser comme des notebooks, il vous faudra utiliser l’extension
Jupytext (qui est dans le requirements.txt
). C’est entre
autres une façon d’avoir un historique git propre.
Ressources
Apprentissage artificiel
La référence pour le TAL :
- Speech and Language Processing de Daniel Jurafsky et
James H. Martin est indispensable. Il parle de bien plus de chose que simplement de
l’apprentissage artificiel, mais sur le plan théorique il contient tout ce dont on parlera
concernant l’apprentissage pour le TAL. Il est disponible gratuitement et mis à jour tous les ans,
donc n’hésitez pas à le consulter très fréquemment.
Les suivants sont des textbooks avec une approche mathématique plus complète et détaillée, c’est
vers eux qu’il faut se tourner pour répondre aux questions profondes. Ils sont un peu cher alors si
vous voulez les utiliser, commencez par me demander et je vous prêterai les miens.
Python général
Il y a beaucoup, beaucoup de ressources disponibles pour apprendre Python. Ce qui suit n’est qu’une
sélection.
Livres
Ils commencent à dater un peu, les derniers gadget de Python n’y seront donc pas, mais leur lecture
reste très enrichissante (les algos, ça ne vieillit jamais vraiment).
- How to think like a computer scientist, de Jeffrey Elkner, Allen B. Downey, and Chris Meyers.
Vous pouvez l’acheter. Vous pouvez aussi le lire
ici
- Dive into Python, by Mark Pilgrim. Ici vous pouvez le lire ou
télécharger le pdf.
- Learning Python, by Mark Lutz.
- Beginning Python, by Magnus Lie Hetland.
- Python Algorithms: Mastering Basic Algorithms in the Python Language, par Magnus Lie Hetland.
Peut-être un peu costaud pour des débutants.
- Programmation Efficace. Les 128 Algorithmes Qu’Il Faut Avoir Compris et Codés en Python au Cours
de sa Vie, by Christoph Dürr and Jill-Jênn Vie. Si le cours vous paraît trop facile. Le code
Python est clair, les difficultés sont commentées. Les algos sont très costauds.
Web
Il vous est vivement conseillé d’utiliser un (ou plus) des sites et tutoriels ci-dessous.
Divers
- La chaîne YouTube 3blue1brown pour des vidéos de maths
générales.
- La chaîne YouTube de Freya Holmér plutôt orientée game
design, mais avec d’excellentes vidéos de géométrie computationnelle.
Licences

Copyright © 2021 Loïc Grobol <loic.grobol@gmail.com>
Sauf indication contraire, les fichiers présents dans ce dépôt sont distribués selon les termes de
la licence Creative Commons Attribution 4.0
International. Voir le README
pour plus de détails.
Un résumé simplifié de cette licence est disponible à
https://creativecommons.org/licenses/by/4.0/.
Le texte intégral de cette licence est disponible à
https://creativecommons.org/licenses/by/4.0/legalcode