Skip to content

Commit 06913a2

Browse files
authored
Minor updates (#80)
* style * collect * plan * rst * up * update * add xarray * aciton * fix reqz * notebook * article * fix index * less ci
1 parent 64fc589 commit 06913a2

20 files changed

+6232
-91
lines changed

.github/workflows/documentation.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
run: python -m pip install -r requirements-dev.txt
3636

3737
- name: Cache pip
38-
uses: actions/cache@v2
38+
uses: actions/cache@v4
3939
with:
4040
path: ~/.cache/pip
4141
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }}

_doc/api/datasets/data_ts.rst

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
teachpyx.datasets.data_ts
3+
=========================
4+
5+
.. automodule:: teachpyx.datasets.data_ts
6+
:members:
7+
:no-undoc-members:

_doc/api/datasets/index.rst

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ teachpyx.datasets
1717

1818

1919
data_helper
20+
data_ts
2021
documentation
2122
enedis
2223
gpd_helper

_doc/articles/2025/2025-03-01-route2025.rst

+68-8
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ Séance 4 (21/2)
9999
* prétraitements
100100
* anomalie
101101
* cartes
102+
* clustering
102103

103104
**Cartes**
104105

@@ -109,25 +110,32 @@ Séance 4 (21/2)
109110
* `Réseau de neurones <https://sdpython.github.io/doc/mlstatpy/dev/c_ml/rn/rn.html>`_,
110111
`LeNet <https://en.wikipedia.org/wiki/LeNet>`_
111112
* `Seq2Seq <https://en.wikipedia.org/wiki/Seq2seq>`_,
112-
`Sequence To Sequnce <https://paperswithcode.com/method/seq2seq>`_,
113+
`Sequence To Sequence <https://paperswithcode.com/method/seq2seq>`_,
113114
`Sequence to Sequence (seq2seq) and Attention
114115
<https://lena-voita.github.io/nlp_course/seq2seq_and_attention.html>`_,
115116
`Transformers <https://research.google/blog/transformer-a-novel-neural-network-architecture-for-language-understanding/>`_,
116117
`Attention is All You Need
117-
<https://france.devoteam.com/paroles-dexperts/attention-is-all-you-need-comprendre-le-traitement-naturel-du-langage-avec-les-modeles-transformers/>`_
118+
<https://france.devoteam.com/paroles-dexperts/attention-is-all-you-need-comprendre-le-traitement-naturel-du-langage-avec-les-modeles-transformers/>`_,
119+
`BLEU <https://fr.wikipedia.org/wiki/BLEU_(algorithme)>`_
118120

119121
**Anomalies**
120122

121123
* `Novelty and Outlier Detection <https://scikit-learn.org/stable/modules/outlier_detection.html>`_
122124

125+
**Clustering**
126+
127+
* `clustering <https://scikit-learn.org/stable/modules/clustering.html>`_
128+
* Vieux notebooks sur l'utilisation de vélos à Chicago
129+
`City Bike Views <https://github.com/sdpython/ensae_projects/blob/master/_doc/notebooks/challenges/city_bike/city_bike_views.ipynb>`_,
130+
`City Bike Clustering <https://github.com/sdpython/ensae_projects/blob/master/_doc/notebooks/challenges/city_bike/city_bike_solution_cluster_start.ipynb>`_,
131+
123132
**Prétraitement**
124133

125-
* Dates, Catégories : `category_encoders <https://contrib.scikit-learn.org/category_encoders/>`,
126-
`skrub <https://skrub-data.org/stable/>`_,
134+
* Dates, Catégories : :epkg:`category_encoders`, :epkg:`skrub`,
127135
:ref:`Prétraitement des catégories <nbl-practice-ml-pretraitement_cat>`
128136
* Son : :epkg:`librosa`, voir :ref:`Prétraitement du son <nbl-practice-ml-pretraitement_son>`
129137
* Image : :epkg:`scikit-image`, voir :ref:`Prétraitement d'une image <nbl-practice-ml-pretraitement_image>`
130-
* Texte : :ref:`Prétraitement d'une image <nbl-practice-ml-pretraitement_texte>`
138+
* Texte : :ref:`Prétraitement du texte <nbl-practice-ml-pretraitement_texte>`
131139

132140
Pour la suite, on souhaite comparer ces approches sur un jeu
133141
accessible depuis le package `datasets <https://huggingface.co/docs/datasets/en/index>`_.
@@ -148,7 +156,59 @@ accessible depuis le package `datasets <https://huggingface.co/docs/datasets/en/
148156
Séance 5 (6/3)
149157
==============
150158

151-
* série temporelles
152-
* analyses de survie
153-
* DeepAR
159+
**Régression, Classification linéaires**
160+
161+
:epkg:`statsmodels` pour obtenir le résultat de tests de nullité des coefficients
162+
163+
* :ref:`Régression logistique en 2D <nbl-practice-ml-winesc_color_line>`
164+
* :ref:`Plusieurs modèles, données disjointes <nbl-practice-ml-winesc_color_linear>`
165+
166+
**Interprétabilité**
167+
168+
* `Partial Dependence <https://scikit-learn.org/stable/modules/partial_dependence.html>`_
169+
* `Permutation Importance <https://scikit-learn.org/stable/modules/permutation_importance.html>`_
170+
* `LIME <https://arxiv.org/abs/1602.04938>`_
171+
* `Shapley value <https://en.wikipedia.org/wiki/Shapley_value>`_,
172+
`SHAP <https://shap.readthedocs.io/en/latest/index.html>`_
173+
* `Counterfactual Reasoning and Learning Systems <https://arxiv.org/abs/1209.2355>`_
174+
175+
**séries temporelles**
176+
177+
`Foundation Models for Time Series Analysis: A Tutorial and Survey <https://arxiv.org/pdf/2403.14735>`_
178+
179+
Le modèle de référence est :epkg:`statsmodels`
180+
181+
* :ref:`Single Spectrum Analysis (SSA) <nbl-practice-ml-timeseries_ssa>`
182+
* :ref:`Décomposition d'une série temporelle <nbl-practice-ml-timeseries_seasonal>`
183+
184+
:epkg:`sktime` propose une API plus proche de :epkg:`scikit-learn`
185+
et d'autres modèles comme le clusting ou la segmentation de séries temporelles.
186+
187+
:epkg:`prophet` fait aussi de la prédiction et contient aussi des algorithmes
188+
de détection de changement de régime, il contient une bonne base de jours
189+
fériés.
190+
191+
:epkg:`pyflux` permet d'estimer des modules `GARCH
192+
<https://en.wikipedia.org/wiki/Autoregressive_conditional_heteroskedasticity>`_.
193+
194+
**Analyse de survie**
195+
196+
* :epkg:`scikit-survival`, :epkg:`lifelines`, analyses de survie,
197+
`Analyse de survie <https://sdpython.github.io/doc/mlstatpy/dev/c_ml/survival_analysis.html>`_,
198+
199+
**Deep Learning**
200+
201+
* `DeepAR <https://arxiv.org/abs/1704.04110>`_
202+
(code `Autoregressive modelling with DeepAR and DeepVAR
203+
<https://pytorch-forecasting.readthedocs.io/en/stable/tutorials/deepar.html#>`_)
204+
* `Time Series Forecasting with LLMs: Understanding and Enhancing Model Capabilities <https://arxiv.org/html/2402.10835v1>`_
205+
* `Time-LLM: Time Series Forecasting by Reprogramming Large Language Models <https://arxiv.org/abs/2310.01728>`_
154206
* temps réel
207+
208+
Evaluation
209+
==========
210+
211+
* https://defis.data.gouv.fr/
212+
* le projet doit inclure au moins un graphe
213+
*Partial Dependence* ou *Permutation Importance* (voir liens ci-dessus)
214+
* soutenance 11 avril 9h-13h

_doc/articles/2025/2025-04-01-route2025.rst

+91
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,94 @@ Excel avec un graphe automatiquement depuis Python.
118118
* :ref:`l-example-serialization`
119119
* :ref:`l-example-plot-groupby`
120120
* :ref:`Manipulation de données avec pandas <nbl-c_data-nb_pandas>`
121+
122+
Journée 3 (3/3)
123+
===============
124+
125+
**Partie 1**
126+
127+
* retour sur la syntaxe du langage python, boucle, test, fonctions et classes,
128+
* exercice : :ref:`Tracer une pyramide bigarrée <nbl-practice-tds-base-pyramide_bigarree>`
129+
* :ref:`exceptions`
130+
* :ref:`l-regex`, :ref:`Expressions régulières <nbl-practice-py-base-exercice_regex>`
131+
* :mod:`pickle`, fichiers pickle (voir :ref:`chap_serialization`)
132+
* récupération des fichiers préparés pour la formation avec pandas
133+
* utilisation de :epkg:`skrub` pour avoir un premier aperçu ou
134+
:epkg:`pandas-profiling`, (voir aussi :epkg:`orange3`)
135+
* première jointure
136+
137+
**Partie 2**
138+
139+
* gestion des dates
140+
* rappel pandas: group by, jointure, inner, outer, left, right, pivot
141+
* une fois la base complète obtenue, analyse de nouveau
142+
* API `REST <https://en.wikipedia.org/wiki/REST>`_, exemple avec l'API de la
143+
`Banque de France <https://webstat.banque-france.fr/fr/pages/guide-migration-api/>`_
144+
et le module `requests <https://requests.readthedocs.io/en/latest/>`_
145+
146+
**Questions sur les données une fois la jointure effectuée**
147+
148+
* A-t-on associé tous les sinistres ?
149+
* Calculer la durée entre la date d'un sinistre et le premier jour couvert par l'assurance.
150+
Tracer sa distribution. Que remarque-t-on ?
151+
* Peut-on garder tous les sinistres associés ? (il faut regarder la période couverte)
152+
* On calcule le nombre de sinistres par individu, puis on fait la moyenne
153+
par année. Est-ce que la proportion paraît constante ?
154+
* On fait de même pour différentes catégories de la base ?
155+
* Comment illustrer rapidement cela avec un graphique ?
156+
* Comment faire des statistiques sur une année ?
157+
Comment faire avec des assurances à cheval sur deux années ?
158+
159+
Journée 4 (4/3)
160+
===============
161+
162+
**Partie 1**
163+
164+
* retour sur les graphes :epkg:`matplotlib`, :epkg:`seaborn`, :epkg:`plotly`, :epkg:`skrub`
165+
* cartographie, :epkg:`cartopy`, :epkg:`folium`
166+
* corrélations, pairplots
167+
* cubes de données avec pandas, passer un indice à droite (colonnes), à gauche (index),
168+
:ref:`Cube de données et pandas <nbl-c_data-nb_pandas_cube>`
169+
* reprise de quelques traitement de la veille en SQL :func:`pandas.read_sql`, :meth:`pandas.DataFrame.to_sql`
170+
* mêmes opérations avec :epkg:`SQLite`, :mod:`sqlite3`
171+
* gestion des doublons avec :meth:`pandas.DataFrame.duplicated`
172+
* identification des valeurs aberrantes, voir :meth:`pandas.DataFrame.quantile`
173+
* :ref:`Tests unitaires <nbl-practice-py-base-tests_unitaires>`
174+
* On reprend le code écrit jusqu'à présent. On veut écrire une fonction qui
175+
effectue la jointure et extrait toutes les lignes aberrantes ou manquantes.
176+
* Ecrire un test unitaire qui valide cette fonction.
177+
Peut-on utiliser les données qu'on manipule depuis
178+
le début de la séance ?
179+
180+
**Partie 2**
181+
182+
* notion d'itérateur en python
183+
* application à :func:`pandas.read_csv` version itérateur pour manipuler des gros dataframes
184+
* utilisation de sqlite3 (extension sqlite3 vscode)
185+
* découpage d'une base en deux, apprentissage, respecter le temps et les identifiants
186+
* calcul du prix d'un contrat d'assurance pour un an en fonction de
187+
variables choisies en fonction des données connues
188+
* Obtient-on le même prix sur les deux bases ?
189+
* Ecrire le test unitaire validant la fonction qui calcule le prix.
190+
* Notion de package.
191+
192+
Journée 5 (5/3)
193+
===============
194+
195+
* introduction de :epkg:`scikit-learn`
196+
* valeurs manquantes, remplacement simple (moyenne),
197+
corrélations (:class:`sklearn.impute.KNNImputer`), prédictions
198+
(:class:`sklearn.impute.IterativeImputer`),
199+
(voir `sklearn.impute <https://scikit-learn.org/stable/api/sklearn.impute.html>`_)
200+
* premières impressions
201+
* exemples classique pour traiter, enrichir un jeux de données :
202+
`skrub tutorial <https://skrub-data.org/stable/auto_examples/00_getting_started.html>`_,
203+
voir aussi
204+
`AggJoiner on a credit fraud dataset <https://skrub-data.org/stable/auto_examples/08_join_aggregation.html>`_
205+
* :class:`sklearn.pipeline.Pipeline`, :class:`sklearn.compose.ColumnTransformer`,
206+
:class:`sklearn.pipeline.FeatureUnion`
207+
* Dates, Catégories : :epkg:`category_encoders`, :epkg:`skrub`,
208+
:ref:`Prétraitement des catégories <nbl-practice-ml-pretraitement_cat>`
209+
* Son : :epkg:`librosa`, voir :ref:`Prétraitement du son <nbl-practice-ml-pretraitement_son>`
210+
* Image : :epkg:`scikit-image`, voir :ref:`Prétraitement d'une image <nbl-practice-ml-pretraitement_image>`
211+
* Texte : :ref:`Prétraitement du texte <nbl-practice-ml-pretraitement_texte>`

_doc/c_data/dataframes.rst

+1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ Dataframes
77

88
nb_dataframe
99
nb_pandas
10+
nb_pandas_cube
1011
nb_dataframe_matrix_speed
1112

0 commit comments

Comments
 (0)