2025-03-01 : feuille de route 2025 - mars¶
site web : sdpython.github.io
Apprendre la programmation avec Python
Séance 1 (31/1)¶
Un jeu de données :
Quatre thèmes
Deux types de problèmes : régression, classifications
Problèmes dérivés : ranking, clustering, série temporelles
Calculs, puissances de calculs, CUDA, CPU
Environnement de travail, coder avec un LLM en local, 2025-01-31 : local LLM, avenir du datascientiste
Autres notes
programmation (python numpy, pandas, matplotlib, jupyter)
Tests unitaires, package python
machine learning, scikit-learn, pytorch
évaluation, ROC,
ranking, clustering
Coder avec un LLM en local : 2025-01-31 : local LLM
Notebooks, Visual Studio Code
Séance 2 (7/2)¶
arbre de régression, de classification RandomForest, Overfitting
Gradient Boosting, Gradient Boosting et Learning Rate avec les Random Forest
Régression linéaire et contraintes sur les coefficients, Ridge, Lasso, ElasticNet, Ridge, Lasso, mathématiques
paramètres et hyper paramètres, Sélection des hyper-paramètres,
sklearn.model_selection.GridSearchCV
Séance 3 (14/2)¶
un peu plus de code
pipelines
créer son propre estimateur
tests unitaires
Pour cette séance, on souhaite construire un estimateur qui estime une régression linéaire à coefficients positifs, une autre avec des coefficients uniquement négatifs puis pour finir une dernière régression linéaire qui considère les deux premières comme features.
Une régression linéaire minimise l’erreur
.
Le gradient est
.
Comme le modèle souhaité est équivalent à une optimisation sous contrainte, on propose de le résoudre comme ceci :
On applique une itération de l’algorithme de la descente de gradient :
.
On ne garde que les coefficients positifs :
.
On retourne à l’étape 1 ou on s’arrête si l’algorithme a convergé.
On appliquera cela au jeu de données sklearn.datasets.load_diabetes()
ou
Wine Quality
on comparera à une simple régression linéaire, les coefficients sont-ils
équivalents ? Comment comparer les modèles ?
Séance 4 (21/2)¶
prétraitements
anomalie
cartes
clustering
Cartes
Réseaux de neurones
Seq2Seq, Sequence To Sequence, Sequence to Sequence (seq2seq) and Attention, Transformers, Attention is All You Need, BLEU
Anomalies
Clustering
Vieux notebooks sur l’utilisation de vélos à Chicago City Bike Views, City Bike Clustering,
Prétraitement
Dates, Catégories : category_encoders, skrub, Prétraitement des catégories
Son : librosa, voir Prétraitement du son
Image : scikit-image, voir Prétraitement d’une image
Texte : Prétraitement du texte
Pour la suite, on souhaite comparer ces approches sur un jeu accessible depuis le package datasets. Large Movie Review Dataset
from datasets import load_dataset
dataset = load_dataset("stanfordnlp/imdb", split="train")
print(dataset)
Dataset({
features: ['text', 'label'],
num_rows: 25000
})
Séance 5 (6/3)¶
Régression, Classification linéaires
statsmodels pour obtenir le résultat de tests de nullité des coefficients
Interprétabilité
séries temporelles
Foundation Models for Time Series Analysis: A Tutorial and Survey
Le modèle de référence est statsmodels
sktime propose une API plus proche de scikit-learn et d’autres modèles comme le clusting ou la segmentation de séries temporelles.
prophet fait aussi de la prédiction et contient aussi des algorithmes de détection de changement de régime, il contient une bonne base de jours fériés.
pyflux permet d’estimer des modules GARCH.
Analyse de survie
scikit-survival, lifelines, analyses de survie, Analyse de survie,
Deep Learning
Evaluation¶
le projet doit inclure au moins un graphe Partial Dependence ou Permutation Importance (voir liens ci-dessus)
soutenance 11 avril 9h-13h