Skip to content
Open

plan #91

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/rstcheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ jobs:
run: python -m pip install sphinx tomli rstcheck[toml,sphinx]

- name: rstcheck
run: rstcheck -r _doc teachpyx
run: find _doc teachpyx -name "*.rst" ! -path "_doc/articles/2026/2026-03-15-route2026-ml.rst" -print0 | xargs -0 -r rstcheck
2 changes: 1 addition & 1 deletion _doc/articles/2026/2026-03-15-route2026-ml.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.. _l-feuille-route-2026:

=========================================
2026-03-15 : feuille de route 2025 - mars
2026-03-15 : feuille de route 2026 - mars
=========================================

site web : `sdpython.github.io <https://sdpython.github.io/>`_
Expand Down
157 changes: 157 additions & 0 deletions _doc/articles/2026/2026-04-13-route2026.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
.. _l-feuille-route-2026-2:

==========================================
2026-04-13 : feuille de route 2026 - avril
==========================================

site web : `sdpython.github.io <https://sdpython.github.io/>`_

`Apprendre la programmation avec Python
<https://sdpython.github.io/doc/teachpyx/dev/>`_

Journée 1 (13/4) - Data Analyse
===============================

L'Objectif de la journée : créer une base de données avec le résultat des élections municipales.

raccourci : https://github.com/sdpython/teachdata/tree/main/municipales

* quelques mots sur ChatGPT, Gemini, Claude, et la notion de vibe-coding
* on code moins, on lit plus, mais il faut toujours comprendre le code
* `Building Claude Code with Harness Engineering <https://levelup.gitconnected.com/building-claude-code-with-harness-engineering-d2e8c0da85f0>`_

Quelques modules :

* :epkg:`numpy`
* :epkg:`pandas`
* :epkg:`matplotlib`
* :epkg:`seaborn`
* :epkg:`statsmodels`
* :epkg:`skrub`
* :epkg:`scikit-learn`

**Exercices numpy**

* :ref:`Calcul matriciel avec numpy <nbl-c_data-nb_numpy>`
* :ref:`numpy broadcast <nbl-c_data-numpy_broadcast>`
* :ref:`Pivot de Gauss <nbl-practice-years-2023-pivot_gauss>`

**Exercices pandas**

* :ref:`l-example-serialization`
* :ref:`l-example-plot-groupby`
* :ref:`Manipulation de données avec pandas <nbl-c_data-nb_pandas>`
* filter, groupby, jointure, pivot

**Quelques exercices pour plus d'agilité**

* que vaut ``1/2`` ? et ``1//2`` ?
* retourner une liste (obtenir une liste dans l'autre sens)
* calculer le nombre d'occurences des éléments d'une liste (histogrammes)
* modifier un élément d'un tuple
* retourner un dictionnaire : que fait-on des doublons ?
* trouver le minimum dans un tableau
* trier un tableau
* transformer une liste en un dictionnaire et réciproquement
* comment multiplier une chaîne de caractère ?
* écrire une boucle ``for`` et la même avec une boucle ``while``
* écrire un test
* écrire une fonction qui vérifie si une chaîne de caractères est symétrique
* écrire une fonction qui retourne une chaîne de caractères sans ses voyelles

*fonctions*

* fonction, paramètre par défaut
* arguments positionnels, arguments nommés
* écrire une fonction récursive
* écrire une fonction qui calcule la suite de Fibonacci ?
* écriture ``*args``, ``**kwargs`` ?
* comment espionner une autre fonction ?

*graphes*

* comment représenter un graphe de type facebook à l'aide dictionnaires ?
* compter le nombre d'amis en commun ?
* compter le nombre moyen de connexions ?
* comment obtenir la liste des membres du graphes ?

**Exercices plus longs**

* :ref:`Variables, boucles, tests <nbl-practice-tds-base-variable_boucle_tests>`
* :ref:`Structures de données <nbl-practice-py-base-structures_donnees_conversion>`
* :ref:`Tracer une pyramide bigarrée <nbl-practice-tds-base-pyramide_bigarree>`
* :ref:`Recherche dichotomique <nbl-practice-py-base-recherche_dichotomique>`
* :ref:`Tri plus rapide que prévu <nbl-practice-py-base-tri_nlnd>`
* :ref:`l-exp-mathador`
* :ref:`Un bref aperçu des classes <nbl-practice-py-base-classes_metro>`
* :ref:`Prises aux dames <nbl-practice-py-base-dame_prise>`
* :ref:`les itérateurs <nbl-practice-py-base-classe_iterateur>`
* :ref:`Quelques programmes truffés d'erreurs <nbl-practice-exams-interro_rapide_20_minutes_2014_11>`

**Exercices plus costauds**

* `Lettres et encodages <https://sdpython.github.io/doc/teachpyx/dev/_downloads/032ccfaa7b99eb2a4b992aaa3bc48c34/td_note_2023-2024.pdf>`_
* `Câblages électriques <https://sdpython.github.io/doc/teachpyx/dev/_downloads/8b77610717572d8d8899c825964056bb/td_note_2024.pdf>`_
* `Dessin d'un arbre <https://sdpython.github.io/doc/teachpyx/dev/_downloads/538fb74f2b1a76ede9cb20e40bb4b8af/td_note_2022_rattrapage2.pdf>`_
(`correction <https://sdpython.github.io/doc/teachpyx/dev/practice/exams/td_note_2022_rattrapage2.html>`_)

**PDF**

.. code-block:: python

from pypdf import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

# ...

Journée 2 (14/4)
================

**Partie 1**

* :ref:`exceptions`
* :ref:`l-regex`, :ref:`Expressions régulières <nbl-practice-py-base-exercice_regex>`
* :mod:`pickle`, fichiers pickle (voir :ref:`chap_serialization`)
* récupération des fichiers préparés pour la formation avec pandas
* utilisation de :epkg:`skrub`
* première jointure

**Partie 2**

* introduction de :epkg:`scikit-learn`
* valeurs manquantes, remplacement simple (moyenne),
corrélations (:class:`sklearn.impute.KNNImputer`), prédictions
(:class:`sklearn.impute.IterativeImputer`),
(voir `sklearn.impute <https://scikit-learn.org/stable/api/sklearn.impute.html>`_)
* premières impressions
* exemples classique pour traiter, enrichir un jeux de données :
`skrub tutorial <https://skrub-data.org/stable/auto_examples/00_getting_started.html>`_,
voir aussi
`AggJoiner on a credit fraud dataset <https://skrub-data.org/stable/auto_examples/08_join_aggregation.html>`_
* :class:`sklearn.pipeline.Pipeline`, :class:`sklearn.compose.ColumnTransformer`,
:class:`sklearn.pipeline.FeatureUnion`
* Dates, Catégories : :epkg:`category_encoders`, :epkg:`skrub`,
:ref:`Prétraitement des catégories <nbl-practice-ml-pretraitement_cat>`
* Son : :epkg:`librosa`, voir :ref:`Prétraitement du son <nbl-practice-ml-pretraitement_son>`
* Image : :epkg:`scikit-image`, voir :ref:`Prétraitement d'une image <nbl-practice-ml-pretraitement_image>`
* Texte : :ref:`Prétraitement du texte <nbl-practice-ml-pretraitement_texte>`

Journée 3 (15/4)
================

**programmation Avancé**

* notion de test unitaires
* création de ses propres classes (estimateur scikit-learn)

Journée 4 (16/4)
================

* retour sur les graphes :epkg:`matplotlib`, :epkg:`seaborn`, :epkg:`plotly`, :epkg:`skrub`
* cartographie, :epkg:`cartopy`, :epkg:`folium`
* corrélations, pairplots
* cubes de données avec pandas, passer un indice à droite (colonnes), à gauche (index),
:ref:`Cube de données et pandas <nbl-c_data-nb_pandas_cube>`
* tracer des graphes sur les élections municipales

1 change: 1 addition & 0 deletions _doc/articles/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Ou *blog*.
:caption: 2026
:maxdepth: 1

2026/2026-04-13-route2026
2026/2026-03-15-route2026-ml

.. toctree::
Expand Down
4 changes: 2 additions & 2 deletions _doc/c_ml/regclass.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Classification et régression
Le site :epkg:`UCI` propose de nombreux jeux de
de données utilisés dans un but pédagogique.
Parmi ceux-ci, on y trouve un jeu de données
sur le vin, `Wine Data Set <https://archive.ics.uci.edu/ml/datasets/wine+quality>`_.
sur le vin, `Wine Data Set <https://archive-beta.ics.uci.edu/dataset/186/wine+quality>`_.
Pour ma part, j'ai goûté le vin assez tard, ne sachant véritablement
l'apprécier qu'à la trentaine avérée. Je suis encore incapable de
déchiffrer le vocabulaire qui sort de la bouche des experts
Expand Down Expand Up @@ -76,7 +76,7 @@ Les données
+++++++++++

Le jeu de données peut être téléchargé depuis le site
`Wine Quality Data Set <https://archive.ics.uci.edu/dataset/186/wine+quality>`_.
`Wine Quality Data Set <https://archive-beta.ics.uci.edu/dataset/186/wine+quality>`_.
Il peut être également obtenu avec le code suivant :

.. runpython::
Expand Down
2 changes: 1 addition & 1 deletion _doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ def linkcode_resolve(domain, info):
"recherche dichotomique": "https://fr.wikipedia.org/wiki/Recherche_dichotomique",
"seaborn": "https://seaborn.pydata.org/",
"transformers": "https://github.com/huggingface/transformers",
"UCI": "https://archive.ics.uci.edu/datasets",
"UCI": "https://archive-beta.ics.uci.edu/",
"variable aléatoire": "https://fr.wikipedia.org/wiki/Variable_al%C3%A9atoire",
"voyageur de commerce": "https://fr.wikipedia.org/wiki/Probl%C3%A8me_du_voyageur_de_commerce",
"xgboost": "https://xgboost.readthedocs.io/en/stable/",
Expand Down
4 changes: 1 addition & 3 deletions _doc/examples/ml/plot_template_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,7 @@ def make_pipeline(table, cible):
if num_cols:
transformers.append(("num", StandardScaler(), num_cols))
if cat_cols:
transformers.append(
("cats", OneHotEncoder(handle_unknown="ignore"), cat_cols)
)
transformers.append(("cats", OneHotEncoder(handle_unknown="ignore"), cat_cols))

model = Pipeline(
[
Expand Down
64 changes: 53 additions & 11 deletions _doc/practice/ml/pretraitement_image.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 1,
"metadata": {},
"outputs": [
{
Expand All @@ -29,7 +29,7 @@
"(dtype('uint8'), (583, 800, 3))"
]
},
"execution_count": 11,
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
Expand All @@ -52,7 +52,7 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": 2,
"metadata": {},
"outputs": [
{
Expand All @@ -63,7 +63,7 @@
"<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=800x583>"
]
},
"execution_count": 12,
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
Expand All @@ -84,7 +84,7 @@
},
{
"cell_type": "code",
"execution_count": 13,
"execution_count": 3,
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -138,13 +138,55 @@
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8dcb7b36a38a436983c7b72c396dbe68",
"model_id": "dc748720a2bb477cb4da52a810ac685e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"preprocessor_config.json: 0%| | 0.00/406 [00:00<?, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "746c1886d7714dfd831ca59f25b21b51",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"config.json: 0.00B [00:00, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a2b49cc5592149bc9fb85c8d34ab18c7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"model.safetensors: 0%| | 0.00/14.2M [00:00<?, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5641a134f46541e1ba815042622279e9",
"version_major": 2,
"version_minor": 0
},
Expand All @@ -159,14 +201,14 @@
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[1mMobileNetV2Model LOAD REPORT\u001b[0m from: google/mobilenet_v2_1.0_224\n",
"[transformers] \u001b[1mMobileNetV2Model LOAD REPORT\u001b[0m from: google/mobilenet_v2_1.0_224\n",
"Key | Status | | \n",
"------------------+------------+--+-\n",
"classifier.weight | UNEXPECTED | | \n",
"classifier.bias | UNEXPECTED | | \n",
"\n",
"\u001b[3mNotes:\n",
"- UNEXPECTED\u001b[3m\t:can be ignored when loading from different task/architecture; not ok if you expect identical arch.\u001b[0m\n"
"Notes:\n",
"- UNEXPECTED:\tcan be ignored when loading from different task/architecture; not ok if you expect identical arch.\n"
]
}
],
Expand All @@ -188,7 +230,7 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 5,
"metadata": {},
"outputs": [
{
Expand Down
2 changes: 1 addition & 1 deletion _doc/practice/years/2026/parcoursup_2026.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -375397,4 +375397,4 @@
},
"nbformat": 4,
"nbformat_minor": 2
}
}
1 change: 1 addition & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ sphinx-issues
git+https://github.com/sdpython/sphinx-runpython.git
statsmodels
torch
torchvision
transformers
ujson
xarray
Expand Down
2 changes: 1 addition & 1 deletion teachpyx/datasets/data/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""
Source:

* `wines-quality.csv <https://archive.ics.uci.edu/ml/datasets/wine+quality>`_
* `wines-quality.csv <https://archive-beta.ics.uci.edu/dataset/186/wine+quality>`_
* `countries.geo.json <https://github.com/johan/world.geo.json/blob/master/countries.geo.json>`_
* `reunion.zip <https://www.insee.fr/fr/statistiques/2520034>`_
* `reunion_rect.zip <https://www.insee.fr/fr/statistiques/2520034>`_
Expand Down
Loading
Loading