:orphan: .. _l-notebooks: Galleries de notebooks ====================== Cette page reprend tous les notebooks disponibles pour ces enseignements et les classes par thèmes. Beaucoup de notebooks se présentent par pairs énoncé - correction car ils servent de supports à des séances de travaux dirigés. Il est préférable de lire l'énoncé d'abord. :ref:`l-notebooks-coverage` .. contents:: :depth: 1 :local: 1A - Exposés, exercices pour apprendre la programmation et les algorithmes -------------------------------------------------------------------------- Ces exercices sont utiles pour apprendre la programmation et les algorithmes. Un exercice typique posé lors des entretiens d'embauche est celui sur le calcul de :math:`x^n` où :math:`n` est entier. D'autres notebooks exposent des notions algorithmiques au travers de courts exemples. Les notebooks s'adressent en premier lieu à ceux qui apprennent à programmer. .. toctree:: :maxdepth: 1 :hidden: notebooks/tableau_contingence notebooks/structures_donnees_conversion notebooks/histogramme_rapide notebooks/code_liste_tuple notebooks/code_multinomial notebooks/exercice_echelle notebooks/exercice_xn notebooks/exercice_morse notebooks/exercice_plus_grande_somme notebooks/recherche_dichotomique notebooks/tri_nlnd notebooks/profiling_example notebooks/nbheap notebooks/coloriage_carre notebooks/pivot_gauss .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/tableau_contingence.thumb.png :target: notebooks/tableau_contingence.html - :ref:`tableaucontingencerst` - $\chi_2$ et tableau de contingence, avec *numpy*, avec *scipy* ou sans. * - .. image:: /notebooks/structures_donnees_conversion.thumb.png :target: notebooks/structures_donnees_conversion.html - :ref:`structuresdonneesconversionrst` - Ce notebook s'amuse à passer d'une structure de données à une autre, d'une liste à un dictionnaire, d'une liste de liste à un dictionnaire, avec toujours les mêmes données : list, dict, tuple. * - .. image:: /notebooks/histogramme_rapide.thumb.png :target: notebooks/histogramme_rapide.html - :ref:`histogrammerapiderst` - Compter les occurences de nombres dans une liste est assez facile avec un dictionnaire et on peut l'écrire de plusieurs manières différentes. * - .. image:: /notebooks/code_liste_tuple.thumb.png :target: notebooks/code_liste_tuple.html - :ref:`codelistetuplerst` - Exemples de containers, list, tuple, set, dict. * - .. image:: /notebooks/code_multinomial.thumb.png :target: notebooks/code_multinomial.html - :ref:`codemultinomialrst` - On part d'une loi uniforme et on simule une loi multinomiale. * - .. image:: /notebooks/exercice_echelle.thumb.png :target: notebooks/exercice_echelle.html - :ref:`exerciceechellerst` - Une grenouille monte une échelle. Elle peut faire des bonds de un ou deux barreaux. Combien a-t-elle de façons de monter une échelle de treize barreaux ? Notion abordée : fonction récursive. * - .. image:: /notebooks/exercice_xn.thumb.png :target: notebooks/exercice_xn.html - :ref:`exercicexnrst` - C'est un exercice courant lors des entretiens d'embauche. Il faut savoir ce qu'est la dichotomie et la notation binaire d'un nombre. * - .. image:: /notebooks/exercice_morse.thumb.png :target: notebooks/exercice_morse.html - :ref:`exercicemorserst` - Le code Morse était utilisé au siècle dernier pour les transmissions. Chaque lettre est représentée par une séquence de points et tirets. Comment décoder ce code ? Notion abordée : graphe, programmation dynamique, trie. * - .. image:: /notebooks/exercice_plus_grande_somme.thumb.png :target: notebooks/exercice_plus_grande_somme.html - :ref:`exerciceplusgrandesommerst` - Ce problème est connu sur le nom de Maximum subarray problem. Notion abordée : programmation dynamique. * - .. image:: /notebooks/recherche_dichotomique.thumb.png :target: notebooks/recherche_dichotomique.html - :ref:`recherchedichotomiquerst` - Recherche dichotomique illustrée. Extrait de Recherche dichotomique, récursive, itérative et le logarithme. * - .. image:: /notebooks/tri_nlnd.thumb.png :target: notebooks/tri_nlnd.html - :ref:`trinlndrst` - Dans le cas général, le coût d'un algorithme de tri est en $O(n \ln n)$. Mais il existe des cas particuliers pour lesquels on peut faire plus court. Par exemple, on suppose que l'ensemble à trier contient plein de fois le même élément. * - .. image:: /notebooks/profiling_example.thumb.png :target: notebooks/profiling_example.html - :ref:`profilingexamplerst` - Profiling et fonction *pdf*. Le profiling est utilisé pour mesurer le temps que passe un programme dans chaque fonction. * - .. image:: /notebooks/nbheap.thumb.png :target: notebooks/nbheap.html - :ref:`nbheaprst` - La structure *heap* ou tas en français est utilisée pour trier. Elle peut également servir à obtenir les *k* premiers éléments d'une liste. * - .. image:: /notebooks/coloriage_carre.thumb.png :target: notebooks/coloriage_carre.html - :ref:`coloriagecarrerst` - Le notebook explore quelques problèmes de géométrie dans un carré. * - .. image:: /notebooks/pivot_gauss.thumb.png :target: notebooks/pivot_gauss.html - :ref:`pivotgaussrst` - Etape par étape, le pivote de Gauss implémenté en python puis avec numpy. 2A - Exposés, techniques de data scientiste ------------------------------------------- Ces notebooks abordent peu de théorie, en majorité des astuces pour améliorer son quotidien de data scientiste. .. toctree:: :maxdepth: 1 :hidden: notebooks/seance_5_intro_et_json notebooks/seance_5_dask notebooks/dataframe_matrix_speed notebooks/seance_5_prog_fonctionnelle notebooks/bayesian_with_python notebooks/ml_timeseries_base notebooks/notebook_convert notebooks/jupyter_custom_magics notebooks/git_notebook notebooks/cffi_linear_regression notebooks/timeseries_ssa .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/seance_5_intro_et_json.thumb.png :target: notebooks/seance_5_intro_et_json.html - :ref:`seance5introetjsonrst` - Une table dans une base de données est déjà le résultat d'une réflexion sur la façon de les représenter. * - .. image:: /notebooks/seance_5_dask.thumb.png :target: notebooks/seance_5_dask.html - :ref:`seance5daskrst` - dask est une sorte de mélange entre pandas et map/reduce. Le module implémente un sous-ensemble des possibilités de pandas sur des données qui ne tiennent pas nécessairement en mémoire. * - .. image:: /notebooks/dataframe_matrix_speed.thumb.png :target: notebooks/dataframe_matrix_speed.html - :ref:`dataframematrixspeedrst` - Lire un dataframe avec un itérateur quand on ne connaît pas sa taille, lire un array avec un itérateur. * - .. image:: /notebooks/seance_5_prog_fonctionnelle.thumb.png :target: notebooks/seance_5_prog_fonctionnelle.html - :ref:`seance5progfonctionnellerst` - Itérateur, générateur, programmation fonctionnelle, tout pour éviter de charger l'intégralité des données en mémoire et commencer les calculs le plus vite possible. * - .. image:: /notebooks/bayesian_with_python.thumb.png :target: notebooks/bayesian_with_python.html - :ref:`bayesianwithpythonrst` - Modèles de mélanges de lois. Statistiques bayésiennes. *bayespy*, *scikit-learn*. * - .. image:: /notebooks/ml_timeseries_base.thumb.png :target: notebooks/ml_timeseries_base.html - :ref:`mltimeseriesbaserst` - Série temporelle et prédiction. Module statsmodels. * - .. image:: /notebooks/notebook_convert.thumb.png :target: notebooks/notebook_convert.html - :ref:`notebookconvertrst` - A couple of tricks to convert notebook such as convert a notebook into RST or HTML, get the notebook name. * - .. image:: /notebooks/jupyter_custom_magics.thumb.png :target: notebooks/jupyter_custom_magics.html - :ref:`jupytercustommagicsrst` - The following example shows how to define custom logic to your notebooks. You will find more details here: Defining your own magics. It works pretty simple. I just defined the magic commands ``%ENSAEl``, ``%%ENSAEb`` and both ``%ENSAE``, ``%%ENSAE``. * - .. image:: /notebooks/git_notebook.thumb.png :target: notebooks/git_notebook.html - :ref:`gitnotebookrst` - Git est un logiciel de suivi de source décentralisé qui permet de travailler à plusieurs sur les mêmes fichiers. Aujourd'hui, on ne crée plus de logiciels sans ce type d'outil qui permet de garder l'historique des modifications apportées à un programme. Git a supplanté tous les autres logiciels du même type. * - .. image:: /notebooks/cffi_linear_regression.thumb.png :target: notebooks/cffi_linear_regression.html - :ref:`cffilinearregressionrst` - L'idée est de recoder une fonction en C. On prend comme exemple la fonction de prédiction de la régression linéaire de scikit-learn et de prévoir le gain de temps qu'on obtient en recodant la fonction dans un langage plus rapide. * - .. image:: /notebooks/timeseries_ssa.thumb.png :target: notebooks/timeseries_ssa.html - :ref:`timeseriesssarst` - Illustration de la méthode SSA pour les séries temporelles appliquée à la détection de points aberrants. La méthode est décrite dans Singular Spectrum Analysis: Methodology and Comparison. Voir aussi Automated outlier detection in Singular Spectrum Analysis. .. _td2A-competition-ml: Compétitions de machine learning -------------------------------- Une compétition de machine learning a été organisé sur plusieurs semaines pour le cours de *Python pour un data scientiste*. On trouve dans cette section différents matériaux pour débuter et quelques solutions des étudiants. .. contents:: :local: .. _td2a-competitions-ml-2016: Année 2016 ++++++++++ L'objectif est de prédire la probabilité de défaut de paiement d'utilisateurs. On dispose de 23 variables et la variable à prédire est binaire. Chaque participant est évalué avec la métrique `AUC `_ qui est une métrique standard dans un problème de classification binaire. Les données sont issues de `default of credit card clients Data Set `_ et ont été un peu modifiées pour la compétition : `apprentissage (X,Y) et test (X) `_. Les étudiants avaient quelques notebooks pour les aider à démarrer. Un notebook présente la solution de l'un d'eux. .. toctree:: :maxdepth: 1 :hidden: notebooks/td2a_eco_competition_statsdesc notebooks/td2a_eco_competition_comparer_classifieurs notebooks/td2a_eco_competition_modeles_logistiques .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td2a_eco_competition_statsdesc.thumb.png :target: notebooks/td2a_eco_competition_statsdesc.html - :ref:`td2aecocompetitionstatsdescrst` - Une compétition était proposée dans le cadre du cours *Python pour un Data Scientist* à l'ENSAE. Ce notebook facilite la prise en main des données et étudie les données avec des méthodes de statistiques descriptives. * - .. image:: /notebooks/td2a_eco_competition_comparer_classifieurs.thumb.png :target: notebooks/td2a_eco_competition_comparer_classifieurs.html - :ref:`td2aecocompetitioncomparerclassifieursrst` - Une compétition était proposée dans le cadre du cours *Python pour un Data Scientist* à l'ENSAE. Ce notebook facilite la prise en main des données et montre comment comparer plusieurs classifieurs avec la courbe ROC. * - .. image:: /notebooks/td2a_eco_competition_modeles_logistiques.thumb.png :target: notebooks/td2a_eco_competition_modeles_logistiques.html - :ref:`td2aecocompetitionmodeleslogistiquesrst` - Une compétition était proposée dans le cadre du cours *Python pour un Data Scientist* à l'ENSAE. Ce notebook facilite la prise en main des données et propose de mettre en oeuvre un modèle logit. .. _td2a-competitions-ml-2017: Année 2017 ++++++++++ L'objectif est de prédire la probabilité de défaut de paiement d'utilisateurs. On dispose de 23 variables et la variable à prédire est binaire. Chaque participant est évalué avec la métrique `AUC `_ qui est une métrique standard dans un problème de classification binaire. Les données sont issues de `default of credit card clients Data Set `_ et ont été un peu modifiées pour la compétition : `apprentissage (X,Y) et test (X) `_. Les étudiants avaient quelques notebooks pour les aider à démarrer. Un notebook présente la solution de l'un d'eux. .. toctree:: :maxdepth: 1 :hidden: notebooks/prepare_data_2017 .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/prepare_data_2017.thumb.png :target: notebooks/prepare_data_2017.html - :ref:`preparedata2017rst` - Ce notebook explique comment les données de la compétation 2017 ont été préparées. On récupére d'abord les données depuis le site OpenFoodFacts. Données ------- Ces données peuvent être utilisées lors de projets, de TDs, ils montrent comment les récupérer. .. toctree:: :maxdepth: 1 :hidden: notebooks/deal_flow_espace_vert notebooks/data_irep .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/deal_flow_espace_vert.thumb.png :target: notebooks/deal_flow_espace_vert.html - :ref:`dealflowespacevertrst` - Ce jeu de données est proposé pour la réalisation d'un projet de module python pour partager une fonction de graphe. Un exemple de ce projet est proposé : td2a_plotting. * - .. image:: /notebooks/data_irep.thumb.png :target: notebooks/data_irep.html - :ref:`dataireprst` - Ce jeu de données est disponible sous le nombre Registre des émissions polluantes. 1A - Examens et solutions ------------------------- Le cours d'introduction à l'algorithmie est conclu par une séance de TD noté. Ces notebooks implémentent les solutions. .. toctree:: :maxdepth: 1 :hidden: notebooks/td_note_2022_rattrapage notebooks/td_note_2021 notebooks/td_note_2023 notebooks/td_note_2022_rattrapage2 notebooks/td_note_2022 notebooks/interro_rapide_20_minutes_2014_10 notebooks/interro_rapide_20_minutes_2014_11 notebooks/interro_rapide_20_minutes_2014_12 notebooks/interro_rapide_20_minutes_2014_09 notebooks/interro_rapide_20_minutes_2015_09 notebooks/interro_rapide_20_minutes_2015_11 notebooks/td_note_2018_1 notebooks/td_note_2018_2 notebooks/td_note_2020_1 notebooks/td_note_2020_2 notebooks/td_note_2019_1 notebooks/td_note_2019_2 notebooks/td_note_2015_rattrapage_enonce notebooks/td_note_2016 notebooks/td_note_2017 notebooks/td_note_2017_2 notebooks/td_note_2013_coloriage_correction notebooks/td_note_2013_bout_de_code_coloriage notebooks/td_note_2015 .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td_note_2022_rattrapage.thumb.png :target: notebooks/td_note_2022_rattrapage.html - :ref:`tdnote2022rattrapagerst` - Correction de l'examen du 15 novembre 2021. * - .. image:: /notebooks/td_note_2021.thumb.png :target: notebooks/td_note_2021.html - :ref:`tdnote2021rst` - Correction de l'examen du 24 novembre 2020. * - .. image:: /notebooks/td_note_2023.thumb.png :target: notebooks/td_note_2023.html - :ref:`tdnote2023rst` - Correction de l'examen du 26 octobre 2022. * - .. image:: /notebooks/td_note_2022_rattrapage2.thumb.png :target: notebooks/td_note_2022_rattrapage2.html - :ref:`tdnote2022rattrapage2rst` - Correction de l'examen du 3 mars 2022. L'objectif est de construire un arbre de façon algorithmique. * - .. image:: /notebooks/td_note_2022.thumb.png :target: notebooks/td_note_2022.html - :ref:`tdnote2022rst` - Correction de l'examen du 3 novembre 2021. * - .. image:: /notebooks/interro_rapide_20_minutes_2014_10.thumb.png :target: notebooks/interro_rapide_20_minutes_2014_10.html - :ref:`interrorapide20minutes201410rst` - dictionnaire et coût algorithmique * - .. image:: /notebooks/interro_rapide_20_minutes_2014_11.thumb.png :target: notebooks/interro_rapide_20_minutes_2014_11.html - :ref:`interrorapide20minutes201411rst` - coût algorithmique, calcul de séries mathématiques * - .. image:: /notebooks/interro_rapide_20_minutes_2014_12.thumb.png :target: notebooks/interro_rapide_20_minutes_2014_12.html - :ref:`interrorapide20minutes201412rst` - dictionnaires * - .. image:: /notebooks/interro_rapide_20_minutes_2014_09.thumb.png :target: notebooks/interro_rapide_20_minutes_2014_09.html - :ref:`interrorapide20minutes201409rst` - chaîne de caractères, tri, fonction * - .. image:: /notebooks/interro_rapide_20_minutes_2015_09.thumb.png :target: notebooks/interro_rapide_20_minutes_2015_09.html - :ref:`interrorapide20minutes201509rst` - tests, boucles, fonctions * - .. image:: /notebooks/interro_rapide_20_minutes_2015_11.thumb.png :target: notebooks/interro_rapide_20_minutes_2015_11.html - :ref:`interrorapide20minutes201511rst` - listes et dictionnaires * - .. image:: /notebooks/td_note_2018_1.thumb.png :target: notebooks/td_note_2018_1.html - :ref:`tdnote20181rst` - Correction du premier énoncé de l'examen du 12 décembre 2017. Celui-ci mène à l'implémentation d'un algorithme qui permet de retrouver une fonction $f$ en escalier à partir d'un ensemble de points $(X_i, f(X_i))$. * - .. image:: /notebooks/td_note_2018_2.thumb.png :target: notebooks/td_note_2018_2.html - :ref:`tdnote20182rst` - Correction du premier énoncé de l'examen du 12 décembre 2017. Celui-ci mène à l'implémentation d'un algorithme qui permet d'approximer une fonction $f$ par une fonction en escalier à partir d'un ensemble de points $(X_i, f(X_i))$. * - .. image:: /notebooks/td_note_2020_1.thumb.png :target: notebooks/td_note_2020_1.html - :ref:`tdnote20201rst` - Correction du premier énoncé de l'examen du 22 octobre 2019. L'énoncé propose une façon de disposer des tables rondes dans une salle ronde. * - .. image:: /notebooks/td_note_2020_2.thumb.png :target: notebooks/td_note_2020_2.html - :ref:`tdnote20202rst` - Correction du second énoncé de l'examen du 22 octobre 2019. L'énoncé propose une façon de disposer des tables carrées dans une salle carrée. * - .. image:: /notebooks/td_note_2019_1.thumb.png :target: notebooks/td_note_2019_1.html - :ref:`tdnote20191rst` - Correction du premier énoncé de l'examen du 23 octobre 2018. L'énoncé propose une méthode pour renseigner les valeurs manquantes dans une base de deux variables. * - .. image:: /notebooks/td_note_2019_2.thumb.png :target: notebooks/td_note_2019_2.html - :ref:`tdnote20192rst` - Correction du second énoncé de l'examen du 23 octobre 2018. L'énoncé propose une méthode pour renseigner les valeurs manquantes dans une base de deux variables. * - .. image:: /notebooks/td_note_2015_rattrapage_enonce.thumb.png :target: notebooks/td_note_2015_rattrapage_enonce.html - :ref:`tdnote2015rattrapageenoncerst` - Questions posées à l'oral autour du jeu 2048 et d'un exercice Google Jam sur le position de carreaux dans un plus grand carré : Problem D. Cut Tiles. * - .. image:: /notebooks/td_note_2016.thumb.png :target: notebooks/td_note_2016.html - :ref:`tdnote2016rst` - Calcul des intérêt d'un emprunt pour acheter un appartement, stratégie d'investissement. * - .. image:: /notebooks/td_note_2017.thumb.png :target: notebooks/td_note_2017.html - :ref:`tdnote2017rst` - Régression linéaire avec des variables catégorielles. * - .. image:: /notebooks/td_note_2017_2.thumb.png :target: notebooks/td_note_2017_2.html - :ref:`tdnote20172rst` - Solution du TD noté, celui-ci présente un algorithme pour calculer les coefficients d'une régression quantile et par extension d'une médiane dans un espace à plusieurs dimensions. * - .. image:: /notebooks/td_note_2013_coloriage_correction.thumb.png :target: notebooks/td_note_2013_coloriage_correction.html - :ref:`tdnote2013coloriagecorrectionrst` - Coloriage d'une image, dessin d'une spirale avec *matplotlib*. * - .. image:: /notebooks/td_note_2013_bout_de_code_coloriage.thumb.png :target: notebooks/td_note_2013_bout_de_code_coloriage.html - :ref:`tdnote2013boutdecodecoloriagerst` - Coloriage d'une image, dessin d'une spirale avec *matplotlib* : éléments de code données avec l'énoncé. * - .. image:: /notebooks/td_note_2015.thumb.png :target: notebooks/td_note_2015.html - :ref:`tdnote2015rst` - Parcours de chemins dans un graphe acyclique (arbre). Exposés ------- Ces notebooks ne sont pas des exercices. Ils viennent principalement illuster la partie :ref:`l-expose-explication` et abordent des problèmes algorithmiques dont quelques solutions sont implémentées. .. toctree:: :maxdepth: 1 :hidden: notebooks/expose_vigenere notebooks/BJKST notebooks/hash_distribution notebooks/expose_einstein_riddle notebooks/ml_rue_paris_parcours notebooks/expose_TSP notebooks/ml_huge_datasets notebooks/ml_table_mortalite notebooks/ml_features_model notebooks/expose_graphe_et_map_reduce notebooks/expose_rwr_recommandation .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/expose_vigenere.thumb.png :target: notebooks/expose_vigenere.html - :ref:`exposevigenererst` - La lettre la plus fréquente en français est la lettre E. Cette information permet de casser le code de César en calculant le décalage entre la lettre la plus fréquente du message codé et E. Mais cette même méthode ne marchera pas pour casser le code de Vigenère. Babbage a contourné cet obstacle en étudiant la fréquence des groupes de trois lettres. * - .. image:: /notebooks/BJKST.thumb.png :target: notebooks/BJKST.html - :ref:`BJKSTrst` - Les streams (flux) de données sont aujourd'hui présents dans de nombreux domaines (réseaux sociaux, e-commerce, logs de connexion Internet, etc.). L'analyse rapide et pertinente de ces flux est motivée par l'immensité des données qui ne peuvent souvent pas être stockés (du moins facilement) et dont le traitement serait trop lourd (penser au calcul de l'âge moyen des 1,86 milliards utilisateurs de Facebook pour s'en convaincre). Ce notebook s'intéresse particulièrement à l'algorithme BJKST. * - .. image:: /notebooks/hash_distribution.thumb.png :target: notebooks/hash_distribution.html - :ref:`hashdistributionrst` - Une fonction de hash a pour propriété statistiques de transformer une distribution quelconque en distribution uniforme. C'est pour cela que beaucoup d'algorithmes utilisent ce type de fonction avant tout traitement pour répartir les données de manières uniformes plutôt que d'utiliser une variable une colonne telle quelle. * - .. image:: /notebooks/expose_einstein_riddle.thumb.png :target: notebooks/expose_einstein_riddle.html - :ref:`exposeeinsteinriddlerst` - Résolution de l'énigme L'énigme d'Einstein. Implémentatin d'une solution à base de règles. * - .. image:: /notebooks/ml_rue_paris_parcours.thumb.png :target: notebooks/ml_rue_paris_parcours.html - :ref:`mlrueparisparcoursrst` - Algorithme de plus courts chemins dans un graphe. Calcul d'un chemin comparé au calcul de tous les chemins les plus courts. * - .. image:: /notebooks/expose_TSP.thumb.png :target: notebooks/expose_TSP.html - :ref:`exposeTSPrst` - Le problème du voyageur de commerce consiste à trouver le plus court chemin passant par toutes les villes. On parle aussi de circuit hamiltonien qui consiste à trouver le plus court chemin passant par tous les noeuds d'un graphe. Le notebook explore quelques solutions approchées et intuitives. * - .. image:: /notebooks/ml_huge_datasets.thumb.png :target: notebooks/ml_huge_datasets.html - :ref:`mlhugedatasetsrst` - L'exemple Building a huge numpy array using pytables montre créer une grande matrice qui ne tient pourtant pas en mémoire. Il existe des modules qui permet de faire des calcul à partir de données stockées sur disque comme si elles étaient en mémoire. * - .. image:: /notebooks/ml_table_mortalite.thumb.png :target: notebooks/ml_table_mortalite.html - :ref:`mltablemortaliterst` - Pas de calcul d'espérence de vie, seulement différentes façons de lire les données d'une table de mortalité. * - .. image:: /notebooks/ml_features_model.thumb.png :target: notebooks/ml_features_model.html - :ref:`mlfeaturesmodelrst` - On se pose toujours la question du modèle de machine learning qui conviendrait le mieux à notre problème. Faut-il choisir un modèle complexe avec des features brutes ou plutôt un modèle simple avec des features retravaillées ? * - .. image:: /notebooks/expose_graphe_et_map_reduce.thumb.png :target: notebooks/expose_graphe_et_map_reduce.html - :ref:`exposegrapheetmapreducerst` - Les graphes sont des structures de données difficiles à manipuler avec des concepts map/reduce car les données ne sont pas indépendantes et la notion de voisinage est importante. Ce notebook explore ces difficultés. * - .. image:: /notebooks/expose_rwr_recommandation.thumb.png :target: notebooks/expose_rwr_recommandation.html - :ref:`exposerwrrecommandationrst` - Si la méthode de factorisation de matrices est la méthode la plus connue pour faire des recommandations, ce n'est pas la seule. L'algorithme Random Walk with Restart s'appuie sur l'exploration locale des noeuds d'un graphe et produit des résultats plus facile à intepréter. Notebooks des étudiants ----------------------- Ces notebooks viennent des étudiants et illustrent certains aspects du cours. .. contents:: :local: Année 2016-2017 --------------- Une compétition a été lancée lors de la première année. Ce notebook a été proposé comme solution par un étudiant. .. contents:: :local: .. toctree:: :maxdepth: 1 :hidden: notebooks/solution_2016_credit_clement .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/solution_2016_credit_clement.thumb.png :target: notebooks/solution_2016_credit_clement.html - :ref:`solution2016creditclementrst` - Ce notebook a été proposé par un étudiant pour la compétition organisée pour ce cours : classification binaire. Année 2017-2018 --------------- Les étudiants contribuent au cours. .. contents:: :local: .. toctree:: :maxdepth: 1 :hidden: notebooks/dimensions_reduction .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/dimensions_reduction.thumb.png :target: notebooks/dimensions_reduction.html - :ref:`dimensionsreductionrst` - On peut souhaiter réduire de nombre de dimensions d'un jeu de données : Année 2018-2019 --------------- Notebooks écrits par les étudiants ou écrits pendant les cours. .. contents:: :local: .. toctree:: :maxdepth: 1 :hidden: notebooks/2018-09-18_sklearn_api notebooks/2018-09-18_rappels_python notebooks/2018-09-18_rappels_python_pandas_matplotlib notebooks/2018-09-25_distance_entre_mots notebooks/2018-10-02_scraping_recuperer_images notebooks/2018-10-09_ensemble_gradient_boosting .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/2018-09-18_sklearn_api.thumb.png :target: notebooks/2018-09-18_sklearn_api.html - :ref:`2018-09-18sklearnapirst` - Présentation de l'API de *scikit-learn* et implémentation d'un prédicteur fait maison. On utilise le jeu du Titanic qu'on peut récupérer sur opendatasoft ou awesome-public-datasets. * - .. image:: /notebooks/2018-09-18_rappels_python.thumb.png :target: notebooks/2018-09-18_rappels_python.html - :ref:`2018-09-18rappelspythonrst` - Notebooks écrit durant la séance du 18 septembre 2018 à propos du langage Python. * - .. image:: /notebooks/2018-09-18_rappels_python_pandas_matplotlib.thumb.png :target: notebooks/2018-09-18_rappels_python_pandas_matplotlib.html - :ref:`2018-09-18rappelspythonpandasmatplotlibrst` - Manipulation de données autour du jeu des passagers du Titanic qu'on peut récupérer sur opendatasoft ou awesome-public-datasets. * - .. image:: /notebooks/2018-09-25_distance_entre_mots.thumb.png :target: notebooks/2018-09-25_distance_entre_mots.html - :ref:`2018-09-25distanceentremotsrst` - La distance proposée est naïve puisqu'elle considère uniquement les lettres communes entre deux mots. * - .. image:: /notebooks/2018-10-02_scraping_recuperer_images.thumb.png :target: notebooks/2018-10-02_scraping_recuperer_images.html - :ref:`2018-10-02scrapingrecupererimagesrst` - Le notebook suivant récupère le contenu d'une page du journal Le Monde, extrait les urls d'images à l'aide d'une expression régulière puis télécharge les images pour les stocker dans un répertoire. Le notebook extrait les images d'une personnalité. * - .. image:: /notebooks/2018-10-09_ensemble_gradient_boosting.thumb.png :target: notebooks/2018-10-09_ensemble_gradient_boosting.html - :ref:`2018-10-09ensemblegradientboostingrst` - Le noteboook explore quelques particularités des algorithmes d'apprentissage pour expliquer certains résultats numériques. L'algoithme AdaBoost surpondère les exemples sur lequel un modèle fait des erreurs. Année 2022-2023 --------------- Notebooks pendant les cours. .. contents:: :local: .. toctree:: :maxdepth: 1 :hidden: notebooks/example_spark .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/example_spark.thumb.png :target: notebooks/example_spark.html - :ref:`examplesparkrst` - ## Initialization .. _l-sklearn-ensae-course-2a: 2A - sklearn_ensae_course ------------------------- Ces exemples viennent des lectures proposées par Gaël Varoquaux A l':epkg:`ENSAE` : `sklearn_ensae_course/notebooks/figures `_. .. toctree:: :maxdepth: 1 :hidden: notebooks/00_introduction_machine_learning_and_data notebooks/01_data_manipulation notebooks/02_basic_of_machine_learning_with_scikit-learn notebooks/03_supervised_classification notebooks/04_supervised_regression notebooks/05_measuring_prediction_performance notebooks/06_unsupervised_dimreduction notebooks/07_application_to_face_recognition notebooks/08_validation_and_learning_curves .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/00_introduction_machine_learning_and_data.thumb.png :target: notebooks/00_introduction_machine_learning_and_data.html - :ref:`00introductionmachinelearninganddatarst` - Machine Learning is about building programs with **tunable parameters** that are adjusted automatically so as to improve their behavior by **adapting to previously seen data**. * - .. image:: /notebooks/01_data_manipulation.thumb.png :target: notebooks/01_data_manipulation.html - :ref:`01datamanipulationrst` - In this section we'll go through the basics of the scientific Python stack for data manipulation: using numpy and matplotlib. * - .. image:: /notebooks/02_basic_of_machine_learning_with_scikit-learn.thumb.png :target: notebooks/02_basic_of_machine_learning_with_scikit-learn.html - :ref:`02basicofmachinelearningwithscikit-learnrst` - Classification and regression. * - .. image:: /notebooks/03_supervised_classification.thumb.png :target: notebooks/03_supervised_classification.html - :ref:`03supervisedclassificationrst` - In this section we'll apply scikit-learn to the classification of handwritten digits. This will go a bit beyond the iris classification we saw before: we'll discuss some of the metrics which can be used in evaluating the effectiveness of a classification model. * - .. image:: /notebooks/04_supervised_regression.thumb.png :target: notebooks/04_supervised_regression.html - :ref:`04supervisedregressionrst` - Here we'll do a short example of a regression problem: learning a continuous value from a set of features. * - .. image:: /notebooks/05_measuring_prediction_performance.thumb.png :target: notebooks/05_measuring_prediction_performance.html - :ref:`05measuringpredictionperformancerst` - *Source:* Course on machine learning with scikit-learn by Gaël Varoquaux * - .. image:: /notebooks/06_unsupervised_dimreduction.thumb.png :target: notebooks/06_unsupervised_dimreduction.html - :ref:`06unsuperviseddimreductionrst` - Unsupervised learning is interested in situations in which X is available, but not y: data without labels. A typical use case is to find hiden structure in the data. * - .. image:: /notebooks/07_application_to_face_recognition.thumb.png :target: notebooks/07_application_to_face_recognition.html - :ref:`07applicationtofacerecognitionrst` - Here we'll take a look at a simple facial recognition example. * - .. image:: /notebooks/08_validation_and_learning_curves.thumb.png :target: notebooks/08_validation_and_learning_curves.html - :ref:`08validationandlearningcurvesrst` - The content in this section is adapted from Andrew Ng's excellent Coursera course. 1A - Travaux dirigés - Introductions ------------------------------------ Tous les énoncés et les corrections des séances d'introduction à la programmation et aux algorithmes. .. toctree:: :maxdepth: 1 :hidden: notebooks/td1a_cenonce_session1 notebooks/td1a_correction_session1 notebooks/pp_exo_deviner_un_nombre notebooks/pp_exo_deviner_un_nombre_correction notebooks/td1a_cenonce_session3 notebooks/td1a_correction_session3 notebooks/integrale_rectangle notebooks/integrale_rectangle_correction notebooks/td1a_pyramide_bigarree notebooks/td1a_pyramide_bigarree_correction notebooks/td1a_cenonce_session2 notebooks/td1a_correction_session2 notebooks/j2048 notebooks/j2048_correction notebooks/td1a_cenonce_session6 notebooks/td1a_correction_session6 notebooks/td1a_cenonce_session5 notebooks/td1a_correction_session5 notebooks/texte_langue notebooks/texte_langue_correction notebooks/td1a_cenonce_session4 notebooks/td1a_correction_session4 notebooks/matrix_dictionary .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td1a_cenonce_session1.thumb.png :target: notebooks/td1a_cenonce_session1.html - :ref:`td1acenoncesession1rst` - Questions très simples pour ceux qui savent coder, quelques éléments principaux du langage Python pour les autres. * - .. image:: /notebooks/td1a_correction_session1.thumb.png :target: notebooks/td1a_correction_session1.html - :ref:`td1acorrectionsession1rst` - La partie 1 ne nécessite pas de correction. * - .. image:: /notebooks/pp_exo_deviner_un_nombre.thumb.png :target: notebooks/pp_exo_deviner_un_nombre.html - :ref:`ppexodevinerunnombrerst` - Notebook sur un des premiers programmes qu'on écrit quand on apprend à programmer. Une boucle, un test. * - .. image:: /notebooks/pp_exo_deviner_un_nombre_correction.thumb.png :target: notebooks/pp_exo_deviner_un_nombre_correction.html - :ref:`ppexodevinerunnombrecorrectionrst` - On reprend la fonction introduite dans l'énoncé et qui permet de saisir un nombre. * - .. image:: /notebooks/td1a_cenonce_session3.thumb.png :target: notebooks/td1a_cenonce_session3.html - :ref:`td1acenoncesession3rst` - Le dictionnaire est une structure de données très utilisée. Elle est illustrée pour un problème de décryptage. * - .. image:: /notebooks/td1a_correction_session3.thumb.png :target: notebooks/td1a_correction_session3.html - :ref:`td1acorrectionsession3rst` - Le notebook ne fait que crypter et décrypter un message sachant le code connu. Casser le code requiert quelques astuces décrites dnas ce notebook : casser le code de Vigenère. * - .. image:: /notebooks/integrale_rectangle.thumb.png :target: notebooks/integrale_rectangle.html - :ref:`integralerectanglerst` - Approximation du calcul d'une intégrale par la méthode des rectangles * - .. image:: /notebooks/integrale_rectangle_correction.thumb.png :target: notebooks/integrale_rectangle_correction.html - :ref:`integralerectanglecorrectionrst` - Approximation du calcul d'une intégrale par la méthode des rectangles. * - .. image:: /notebooks/td1a_pyramide_bigarree.thumb.png :target: notebooks/td1a_pyramide_bigarree.html - :ref:`td1apyramidebigarreerst` - Cet exercice est inspirée de l'article 2015-04-07 Motif, optimisation, biodiversité. Il s'agit de dessiner un motif. * - .. image:: /notebooks/td1a_pyramide_bigarree_correction.thumb.png :target: notebooks/td1a_pyramide_bigarree_correction.html - :ref:`td1apyramidebigarreecorrectionrst` - Cet exercice est inspirée de l'article 2015-04-07 Motif, optimisation, biodiversité. Il s'agit de dessiner un motif. *Correction*. * - .. image:: /notebooks/td1a_cenonce_session2.thumb.png :target: notebooks/td1a_cenonce_session2.html - :ref:`td1acenoncesession2rst` - Répétitions de code, exécuter une partie plutôt qu'une autre. * - .. image:: /notebooks/td1a_correction_session2.thumb.png :target: notebooks/td1a_correction_session2.html - :ref:`td1acorrectionsession2rst` - Boucles, tests, correction. * - .. image:: /notebooks/j2048.thumb.png :target: notebooks/j2048.html - :ref:`j2048rst` - Le jeu 2048 est assez simple et fut populaire en son temps. Comment imaginer une stratégie qui dépasser le 2048 ? * - .. image:: /notebooks/j2048_correction.thumb.png :target: notebooks/j2048_correction.html - :ref:`j2048correctionrst` - Le jeu 2048 est assez simple et fut populaire en son temps. Comment imaginer une stratégie qui dépasser le 2048 ? * - .. image:: /notebooks/td1a_cenonce_session6.thumb.png :target: notebooks/td1a_cenonce_session6.html - :ref:`td1acenoncesession6rst` - L'héritage permet de réécrire certaines parties du code sans pour autant enlever les anciennes versions toujours utilisées. * - .. image:: /notebooks/td1a_correction_session6.thumb.png :target: notebooks/td1a_correction_session6.html - :ref:`td1acorrectionsession6rst` - Correction. * - .. image:: /notebooks/td1a_cenonce_session5.thumb.png :target: notebooks/td1a_cenonce_session5.html - :ref:`td1acenoncesession5rst` - Les classes proposent une façon différente de structurer un programme informatique. Pas indispensable mais souvent élégant. * - .. image:: /notebooks/td1a_correction_session5.thumb.png :target: notebooks/td1a_correction_session5.html - :ref:`td1acorrectionsession5rst` - Correction. * - .. image:: /notebooks/texte_langue.thumb.png :target: notebooks/texte_langue.html - :ref:`textelanguerst` - Comment deviner la langue d'un texte sans savoir lire la langue ? Ce notebook aborde les dictionnaires, les fichiers et les graphiques. * - .. image:: /notebooks/texte_langue_correction.thumb.png :target: notebooks/texte_langue_correction.html - :ref:`textelanguecorrectionrst` - Calcul d'un score pour détecter la langue d'un texte. Ce notebook aborde les dictionnaires, les fichiers et les graphiques (correction). * - .. image:: /notebooks/td1a_cenonce_session4.thumb.png :target: notebooks/td1a_cenonce_session4.html - :ref:`td1acenoncesession4rst` - Le langage Python est défini par un ensemble de règle, une grammaire. Seul, il n'est bon qu'à faire des calculs. Les modules sont des collections de fonctionnalités pour interagir avec des capteurs ou des écrans ou pour faire des calculs plus rapides ou plus complexes. * - .. image:: /notebooks/td1a_correction_session4.thumb.png :target: notebooks/td1a_correction_session4.html - :ref:`td1acorrectionsession4rst` - Correction. * - .. image:: /notebooks/matrix_dictionary.thumb.png :target: notebooks/matrix_dictionary.html - :ref:`matrixdictionaryrst` - Les dictionnaires sont une façon assez de représenter les matrices creuses en ne conservant que les coefficients non nuls. Comment écrire alors le produit matriciel ? 1A - Travaux dirigés autour des algorithmes ------------------------------------------- Problèmes de graphes, d'optimisation, ces notebooks traitent principalement d'algorithmes. .. toctree:: :maxdepth: 1 :hidden: notebooks/td1a_cenonce_session8 notebooks/td1a_correction_session8 notebooks/BJKST_enonce notebooks/graph4exos notebooks/td1a_cenonce_session7_edition notebooks/td1a_correction_session7_edition notebooks/td1a_cenonce_session9 notebooks/td1a_correction_session9 notebooks/td1a_cenonce_session8_wikiroot notebooks/td1a_correction_session8_wikiroot notebooks/graph1exo_parcours notebooks/graph1exo_parcours_correction notebooks/td1a_cenonce_session7 notebooks/td1a_correction_session7 notebooks/td1a_quicksort notebooks/graph_spectral_clustering notebooks/graph_spectral_clustering_correction notebooks/td1a_cenonce_session4_5_jaccard notebooks/td1a_correction_session4_5_jaccard notebooks/td1a_sobel notebooks/td1a_sobel_correction notebooks/td1a_plus_grande_somme notebooks/td1a_plus_grande_somme_correction notebooks/td1a_quicksort_correction .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td1a_cenonce_session8.thumb.png :target: notebooks/td1a_cenonce_session8.html - :ref:`td1acenoncesession8rst` - Le mot trie est anglais et se prononce *traïlle*. Il sera défini plus bas. Cette structure de données est très adaptée à la recherche d'un mot dans une liste ordonnée. C'est aussi une histoire de dictionnaires imbriqués. * - .. image:: /notebooks/td1a_correction_session8.thumb.png :target: notebooks/td1a_correction_session8.html - :ref:`td1acorrectionsession8rst` - Correction. * - .. image:: /notebooks/BJKST_enonce.thumb.png :target: notebooks/BJKST_enonce.html - :ref:`BJKSTenoncerst` - Comment calculer le nombre d'éléments distincts d'un ensemble de données quand celui-ci est trop grand pour tenir en mémoire. C'est ce que fait l'algorithme BJKST. * - .. image:: /notebooks/graph4exos.thumb.png :target: notebooks/graph4exos.html - :ref:`graph4exosrst` - Découvrir les graphes avec des problèmes pas trop compliqués. Composantes connexes, plus court chemin et... * - .. image:: /notebooks/td1a_cenonce_session7_edition.thumb.png :target: notebooks/td1a_cenonce_session7_edition.html - :ref:`td1acenoncesession7editionrst` - La distance d'édition ou de Levenshtein calcule une distance entre deux séquences. L'algorithme utilise la programmation dynamique. * - .. image:: /notebooks/td1a_correction_session7_edition.thumb.png :target: notebooks/td1a_correction_session7_edition.html - :ref:`td1acorrectionsession7editionrst` - Correction. * - .. image:: /notebooks/td1a_cenonce_session9.thumb.png :target: notebooks/td1a_cenonce_session9.html - :ref:`td1acenoncesession9rst` - L'optimisation sous contrainte est un problème résolu. Ce notebook utilise une librairie externe et la compare avec l'algorithme *Arrow-Hurwicz* qu'il faudra implémenter. Plus de précision dans cet article Damped Arrow-Hurwicz algorithm for sphere packing. * - .. image:: /notebooks/td1a_correction_session9.thumb.png :target: notebooks/td1a_correction_session9.html - :ref:`td1acorrectionsession9rst` - Un peu plus de détails dans cet article : Damped Arrow-Hurwicz algorithm for sphere packing. * - .. image:: /notebooks/td1a_cenonce_session8_wikiroot.thumb.png :target: notebooks/td1a_cenonce_session8_wikiroot.html - :ref:`td1acenoncesession8wikirootrst` - Parcourir le graphe formé par les liens wikipédia... Le notebook explore également le web scrapping. * - .. image:: /notebooks/td1a_correction_session8_wikiroot.thumb.png :target: notebooks/td1a_correction_session8_wikiroot.html - :ref:`td1acorrectionsession8wikirootrst` - Correction du notebook du même titre. On part d'une page, on explore les liens des pages liées à la première et on continue. On utilise le module beautifulsoup4 (web scrapping pour parser les pages. * - .. image:: /notebooks/graph1exo_parcours.thumb.png :target: notebooks/graph1exo_parcours.html - :ref:`graph1exoparcoursrst` - On veut compter les arcs, les noeuds d'un graphe. On utilise également les classes. * - .. image:: /notebooks/graph1exo_parcours_correction.thumb.png :target: notebooks/graph1exo_parcours_correction.html - :ref:`graph1exoparcourscorrectionrst` - Algorithme assez simple sur les graphes (correction). * - .. image:: /notebooks/td1a_cenonce_session7.thumb.png :target: notebooks/td1a_cenonce_session7.html - :ref:`td1acenoncesession7rst` - La programmation dynamique est une façon des calculs qui revient dans beaucoup d'algorithmes. Elle s'applique dès que ceux-ci peuvent s'écrire de façon récurrente. * - .. image:: /notebooks/td1a_correction_session7.thumb.png :target: notebooks/td1a_correction_session7.html - :ref:`td1acorrectionsession7rst` - Correction. * - .. image:: /notebooks/td1a_quicksort.thumb.png :target: notebooks/td1a_quicksort.html - :ref:`td1aquicksortrst` - Cet énoncé a pour objectif de présenter l'algorithme de tri quicksort qui permet de trier par ordre croissant un ensemble d'éléments (ici des chaînes de caractères) avec un coût moyen. * - .. image:: /notebooks/graph_spectral_clustering.thumb.png :target: notebooks/graph_spectral_clustering.html - :ref:`graphspectralclusteringrst` - On veut couper un graphe en deux en coupant le moindre d'arcs possible. C'est un algorithme de clustering. * - .. image:: /notebooks/graph_spectral_clustering_correction.thumb.png :target: notebooks/graph_spectral_clustering_correction.html - :ref:`graphspectralclusteringcorrectionrst` - On veut couper un graphe en deux en coupant le moindre d'arcs possible. C'est un algorithme de clustering. Correction du notebook qui contient l'énoncé. * - .. image:: /notebooks/td1a_cenonce_session4_5_jaccard.thumb.png :target: notebooks/td1a_cenonce_session4_5_jaccard.html - :ref:`td1acenoncesession45jaccardrst` - Le notebook part du problème qui consiste à construire une distance entre deux chaînes de caractères en partant d'une idée naïve pour aller jusque la distance d'édition. distance de Jaccard. * - .. image:: /notebooks/td1a_correction_session4_5_jaccard.thumb.png :target: notebooks/td1a_correction_session4_5_jaccard.html - :ref:`td1acorrectionsession45jaccardrst` - De la distance de Jaccard à la distance de Levenshtein. * - .. image:: /notebooks/td1a_sobel.thumb.png :target: notebooks/td1a_sobel.html - :ref:`td1asobelrst` - Le filtre de Sobel est utilisé pour calculer des gradients dans une image. L'image ainsi filtrée révèle les forts contrastes. * - .. image:: /notebooks/td1a_sobel_correction.thumb.png :target: notebooks/td1a_sobel_correction.html - :ref:`td1asobelcorrectionrst` - Correction. * - .. image:: /notebooks/td1a_plus_grande_somme.thumb.png :target: notebooks/td1a_plus_grande_somme.html - :ref:`td1aplusgrandesommerst` - Un exercice classique : trouver la plus grande sous-séquence croissante. Celle-ci n'est pas nécessairement un bloc contigü de la liste initiale mais les entiers apparaissent dans le même ordre. * - .. image:: /notebooks/td1a_plus_grande_somme_correction.thumb.png :target: notebooks/td1a_plus_grande_somme_correction.html - :ref:`td1aplusgrandesommecorrectionrst` - Un exercice classique : trouver la plus grande sous-séquence croissante. Celle-ci n'est pas nécessairement un bloc contigü de la liste initiale mais les entiers apparaissent dans le même ordre. * - .. image:: /notebooks/td1a_quicksort_correction.thumb.png :target: notebooks/td1a_quicksort_correction.html - :ref:`td1aquicksortcorrectionrst` - Implémentation du quicksort façon graphe. 1A - Travaux dirigés autour des données --------------------------------------- Ces notebooks s'intéresse principalement à ceux qui découvre la manipulation des données avec des dataframes. .. toctree:: :maxdepth: 1 :hidden: notebooks/td1a_cenonce_session_10 notebooks/td1a_correction_session_10 notebooks/decorrelation notebooks/decorrelation_correction notebooks/td1a_cenonce_session_12_plot notebooks/td1a_cenonce_session_12_carte notebooks/td1a_cenonce_session_12_js notebooks/td1a_correction_session_12 .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td1a_cenonce_session_10.thumb.png :target: notebooks/td1a_cenonce_session_10.html - :ref:`td1acenoncesession10rst` - Les DataFrame se sont imposés pour manipuler les données avec le module pandas. Le module va de la manipulation des données jusqu'au calcul d'une régresion linéaire. * - .. image:: /notebooks/td1a_correction_session_10.thumb.png :target: notebooks/td1a_correction_session_10.html - :ref:`td1acorrectionsession10rst` - Correction. * - .. image:: /notebooks/decorrelation.thumb.png :target: notebooks/decorrelation.html - :ref:`decorrelationrst` - On construit des variables corrélées gaussiennes et on cherche à construire des variables décorrélées en utilisant le calcul matriciel. * - .. image:: /notebooks/decorrelation_correction.thumb.png :target: notebooks/decorrelation_correction.html - :ref:`decorrelationcorrectionrst` - On construit des variables corrélées gaussiennes et on cherche à construire des variables décorrélées en utilisant le calcul matriciel. (correction) * - .. image:: /notebooks/td1a_cenonce_session_12_plot.thumb.png :target: notebooks/td1a_cenonce_session_12_plot.html - :ref:`td1acenoncesession12plotrst` - Les tableaux et les graphes sont deux outils incontournables des statisticiens. Petite revue des graphes. * - .. image:: /notebooks/td1a_cenonce_session_12_carte.thumb.png :target: notebooks/td1a_cenonce_session_12_carte.html - :ref:`td1acenoncesession12carterst` - Les cartes sont probablement les graphes les plus longs à mettre en place. Si les coordonnées longitude lattitude sont les plus utilisées, il est possible de les considérer comme des coordonnées carthésiennes sur une grande surface (sphérique). Il faut passer par une projection spécifique dans le plan. Il faut également ajouter des repères géographiques pour lire efficacement une carte comme les frontières des pays, les rivières... Tout ça prend du temps. * - .. image:: /notebooks/td1a_cenonce_session_12_js.thumb.png :target: notebooks/td1a_cenonce_session_12_js.html - :ref:`td1acenoncesession12jsrst` - Les graphiques interactif permettent d'afficher plus d'information sur le même graphe mais comme le lecteur ne peut déchiffrer des graphes trop chargés, il interagit pour restreindre sa lecture à une zone précise. Le zoom est indispensable pour visualiser des données très localisées sur de grandes zones géographiques mais ce n'est pas la seule. * - .. image:: /notebooks/td1a_correction_session_12.thumb.png :target: notebooks/td1a_correction_session_12.html - :ref:`td1acorrectionsession12rst` - Correction. td1a_home --------- .. toctree:: :maxdepth: 1 :hidden: notebooks/2021_2048_classe notebooks/2021_tsp notebooks/2020_surface notebooks/2020_graph notebooks/2020_ordonnancement notebooks/2020_tsp notebooks/2020_edit notebooks/2021_random_graph notebooks/2020_suffix notebooks/2020_topk notebooks/2020_covid notebooks/2021_editdist notebooks/2022_profiling notebooks/2022_hash notebooks/2021_covid_pickle notebooks/2020_rest notebooks/2020_json_xml notebooks/2022_serialisation notebooks/2020_numpy notebooks/2020_carte notebooks/2020_regex notebooks/2020_pandas notebooks/2020_profile notebooks/2022_unit_test notebooks/2022_classes .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/2021_2048_classe.thumb.png :target: notebooks/2021_2048_classe.html - :ref:`20212048classerst` - Le jeu 2048 est assez addictif mais peut-on imaginer une stratégie qui joue à notre place est maximise le gain... Le jeu se joue sur une matrice *4x4*. * - .. image:: /notebooks/2021_tsp.thumb.png :target: notebooks/2021_tsp.html - :ref:`2021tsprst` - Le voyageur de commerce ou Travelling Salesman Problem en anglais est le problème NP-complet emblématique : il n'existe pas d'algorithme capable de trouver la solution optimale en temps polynômial. La seule option est de parcourir toutes les configurations pour trouver la meilleure. Ce notebook ne fait qu'aborder le problème. * - .. image:: /notebooks/2020_surface.thumb.png :target: notebooks/2020_surface.html - :ref:`2020surfacerst` - C'est l'histoire d'une boucle, puis d'une autre, puis enfin d'un couple de boucles, voire d'un triplé. * - .. image:: /notebooks/2020_graph.thumb.png :target: notebooks/2020_graph.html - :ref:`2020graphrst` - Les graphes sont un outil très utilisé pour modéliser un ensemble de relations entre personnes, entre produits, entre consommateurs. Les utilisations sont nombreuses, systèmes de recommandations, modélisation de la propagation d'une épidémie, modélisation de flux, plus court chemin dans un graphe. * - .. image:: /notebooks/2020_ordonnancement.thumb.png :target: notebooks/2020_ordonnancement.html - :ref:`2020ordonnancementrst` - Un problème d'ordonnancement est un problème dans lequel il faut déterminer le meilleur moment de démarrer un travail, une tâche alors que celles-ci ont des durées bien précises et dépendent les unes des autres. * - .. image:: /notebooks/2020_tsp.thumb.png :target: notebooks/2020_tsp.html - :ref:`2020tsprst` - TSP, Traveling Salesman Problem ou Problème du Voyageur de Commerce est un problème classique. Il s'agit de trouver le plus court chemin passant par des villes en supposant qu'il existe une route entre chaque paire de villes. * - .. image:: /notebooks/2020_edit.thumb.png :target: notebooks/2020_edit.html - :ref:`2020editrst` - La distance d'édition ou distance de Levenshtein permet de calculer une distance entre deux mots et par extension entre deux séquences. * - .. image:: /notebooks/2021_random_graph.thumb.png :target: notebooks/2021_random_graph.html - :ref:`2021randomgraphrst` - Comment générer un graphe aléatoire... Générer une séquence de nombres aléatoires indépendants est un problème connu et plutôt bien résolu. Générer une structure aléatoire comme une graphe est aussi facile. En revanche, générer un graphe aléatoire vérifiant une propriété - la distribution des degrés - n'est pas aussi simple qu'anticipé. * - .. image:: /notebooks/2020_suffix.thumb.png :target: notebooks/2020_suffix.html - :ref:`2020suffixrst` - Les dictionnaires sont très utilisés pour associer des choses entre elles, surtout quand ces choses ne sont pas entières. Le notebook montre l'intérêt de perdre un peu de temps pour transformer les données et rendre un calcul plus rapide. * - .. image:: /notebooks/2020_topk.thumb.png :target: notebooks/2020_topk.html - :ref:`2020topkrst` - Rechercher les k premiers éléments est un exercice classique d'algorithmie, souvent appelé *top-k*et qu'on peut résoudre à l'aide d'un algorithme de sélection. C'est très utile en machine learning pour retourner les 3, 4, ou 5 premiers résultats d'un modèle prédictif. * - .. image:: /notebooks/2020_covid.thumb.png :target: notebooks/2020_covid.html - :ref:`2020covidrst` - Ou comment utiliser les mathématiques pour comprendre la propagation de l'épidémie. * - .. image:: /notebooks/2021_editdist.thumb.png :target: notebooks/2021_editdist.html - :ref:`2021editdistrst` - Calculer une distance entre deux mots n'est pas le plus intuitif des problèmes. Dans ce notebook, on se permet de tâtonner pour faire évoluer quelques idées autour du sujet. C'est l'occasion aussi de montrer à quoi servent les tests unitaires et pourquoi ils sont utiles lorsqu'on tâtonne. * - .. image:: /notebooks/2022_profiling.thumb.png :target: notebooks/2022_profiling.html - :ref:`2022profilingrst` - Une convolution est une opération très fréquente en deep learning lorsqu'il s'agit d'interpréter des images. Elle est aussi coûteuse et c'est pour ça que beaucoup essayent d'accélérer son calcul à défaut de s'en passer. * - .. image:: /notebooks/2022_hash.thumb.png :target: notebooks/2022_hash.html - :ref:`2022hashrst` - Il est facile de répartir des élèves en quatre groupe après les avoir triés par ordre croissant, les élèves dont les noms de famille commencent par *A* dans le premier groupe et ainsi de suite... Cette répartition peut poser un problème éthique parfois. On souhaite écrire une fonction de répartition qui affecte les étudiants dans un groupe parmi quatre : * - .. image:: /notebooks/2021_covid_pickle.thumb.png :target: notebooks/2021_covid_pickle.html - :ref:`2021covidpicklerst` - Ce notebook aborde les sujets évoqués dans le titre. * - .. image:: /notebooks/2020_rest.thumb.png :target: notebooks/2020_rest.html - :ref:`2020restrst` - Certains sites web actuels font appels à de nombreux modèles de machine learning. Un moteur de recherche affiche beaucoup de résultats différents, des suggestions, des résultats de recherches, des recherches associées, des informations, des résultats locaux. Chacun d'entre eux fait appel à un ou plusieurs modèles de machine learning plus ou moins complexes. Le modèle classique d'un site web, ce sont deux machines : * le **client** : la machine de celui qui consiste le site web * le **server** : la machine qui retourne la page pour celui qui consiste le site web * - .. image:: /notebooks/2020_json_xml.thumb.png :target: notebooks/2020_json_xml.html - :ref:`2020jsonxmlrst` - Transmettre l'information d'une machine à une autre, d'un logiciel à un autre, d'une base de données à une autre est un problème récurrent. Le format le plus simple pour des données est le format csv. Ca marche bien pour les tables mais cela ne permet de transmettre aisément des données non structurées. * - .. image:: /notebooks/2022_serialisation.thumb.png :target: notebooks/2022_serialisation.html - :ref:`2022serialisationrst` - La sérialisation répond à un problème simple : comment échanger des données complexes autres que des tableaux ? * - .. image:: /notebooks/2020_numpy.thumb.png :target: notebooks/2020_numpy.html - :ref:`2020numpyrst` - numpy est la librairie incontournable pour faire des calculs en Python. Ces fonctionnalités sont disponibles dans tous les langages et utilisent les optimisations processeurs. Il est hautement improbable d'écrire un code aussi rapide sans l'utiliser. * - .. image:: /notebooks/2020_carte.thumb.png :target: notebooks/2020_carte.html - :ref:`2020carterst` - Faire une carte, c'est toujours compliqué. C'est simple jusqu'à ce qu'on s'aperçoive qu'on doit récupérer la description des zones administratives d'un pays, fournies parfois dans des coordonnées autres que longitude et latitude. Quelques modules utiles : * - .. image:: /notebooks/2020_regex.thumb.png :target: notebooks/2020_regex.html - :ref:`2020regexrst` - Les expressions régulières sont utilisées pour rechercher des motifs dans un texte tel que des mots, des dates, des nombres... * - .. image:: /notebooks/2020_pandas.thumb.png :target: notebooks/2020_pandas.html - :ref:`2020pandasrst` - pandas est la librairie incontournable pour manipuler les données. Elle permet de manipuler aussi bien les données sous forme de tables qu'elle peut récupérer ou exporter en différents formats. Elle permet également de créer facilement des graphes. * - .. image:: /notebooks/2020_profile.thumb.png :target: notebooks/2020_profile.html - :ref:`2020profilerst` - Le profilage de code ou *profiling* en anglais signifie qu'on mesure le temps passé dans chaque partie d'un programme pour en découvrir les parties les plus coûteuses et les améliorer. On souhaite toujours accélérer un programme trop lent, le profiling permet de savoir sur quelles parties se concentrer. * - .. image:: /notebooks/2022_unit_test.thumb.png :target: notebooks/2022_unit_test.html - :ref:`2022unittestrst` - Les tests unitaires sont l'élément clé pour créer un programme fiable. Il est impensable de s'en passer. Un test unitaire est une fonction qui s'assure qu'une autre fonction retourne le résultat souhaité pour les mêmes entrées. Ils sont présents dans tous les langages. * - .. image:: /notebooks/2022_classes.thumb.png :target: notebooks/2022_classes.html - :ref:`2022classesrst` - Les classes ou la programmation objet est une façon différente d'écrire et d'organiser un programme informatique. Cela ne permet rien de plus que les fonctions mais ça permet de le faire souvent de façon plus élégante. 1A - Travaux dirigés autour des pratiques logiciels --------------------------------------------------- Il est difficile de construire un logiciel qui tiennent la route lorsqu'il est conçu à plusieurs, que certains des auteurs ne sont plus là. Ces notebooks sont un guide des bonnes pratiques. .. toctree:: :maxdepth: 1 :hidden: notebooks/td1a_cython_edit notebooks/td1a_cython_edit_correction notebooks/td1a_sql notebooks/td1a_sql_correction notebooks/td1a_unit_test_ci .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td1a_cython_edit.thumb.png :target: notebooks/td1a_cython_edit.html - :ref:`td1acythoneditrst` - Python est très lent. Il est possible d'écrire certains parties en C mais le dialogue entre les deux langages est fastidieux. Cython propose un mélange de C et Python qui accélère la conception. * - .. image:: /notebooks/td1a_cython_edit_correction.thumb.png :target: notebooks/td1a_cython_edit_correction.html - :ref:`td1acythoneditcorrectionrst` - * - .. image:: /notebooks/td1a_sql.thumb.png :target: notebooks/td1a_sql.html - :ref:`td1asqlrst` - Premiers pas avec le langage SQL. * - .. image:: /notebooks/td1a_sql_correction.thumb.png :target: notebooks/td1a_sql_correction.html - :ref:`td1asqlcorrectionrst` - Correction des exercices du premier notebooks relié au SQL. * - .. image:: /notebooks/td1a_unit_test_ci.thumb.png :target: notebooks/td1a_unit_test_ci.html - :ref:`td1aunittestcirst` - On vérifie toujours qu'un code fonctionne quand on l'écrit mais cela ne veut pas dire qu'il continuera à fonctionner à l'avenir. La robustesse d'un code vient de tout ce qu'on fait autour pour s'assurer qu'il continue d'exécuter correctement. 2A - Travaux dirigés - Data Scientiste / Economiste --------------------------------------------------- Enoncés communs aux data scientistes et aux économistes pour le cours :ref:`l-td2a`. .. toctree:: :maxdepth: 1 :hidden: notebooks/td2a_cenonce_session_2A notebooks/td2a_correction_session_2A notebooks/td2a_cenonce_session_1 notebooks/td2a_correction_session_1 notebooks/td2a_visualisation notebooks/pandas_iterator notebooks/pandas_iterator_correction notebooks/td2a_cenonce_session_5_donnees_non_structurees_et_programmation_fonctionnelle notebooks/td2a_correction_session_5_donnees_non_structurees_et_programmation_fonctionnelle_corrige notebooks/td2a_cenonce_session_2D_jupyter notebooks/td2a_cenonce_session_5 notebooks/td2a_correction_session_5 notebooks/td2a_cenonce_session_2D_parallelisation_local notebooks/td2a_progressbar notebooks/td2a_bigdata_memory notebooks/td2a_cenonce_session_2E notebooks/td2a_correction_session_2E notebooks/td2a_ml_text_features notebooks/td2a_ml_text_features_correction notebooks/ml_crypted_data notebooks/ml_crypted_data_correction notebooks/td2a_some_nlp notebooks/td2a_correction_session_2C notebooks/td2a_cenonce_session_2C .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td2a_cenonce_session_2A.thumb.png :target: notebooks/td2a_cenonce_session_2A.html - :ref:`td2acenoncesession2Arst` - numpy arrays sont la première chose à considérer pour accélérer un algorithme. Les matrices sont présentes dans la plupart des algorithmes et *numpy* optimise les opérations qui s'y rapporte. Ce notebook est un parcours en diagonal. * - .. image:: /notebooks/td2a_correction_session_2A.thumb.png :target: notebooks/td2a_correction_session_2A.html - :ref:`td2acorrectionsession2Arst` - Calcul matriciel (numpy. * - .. image:: /notebooks/td2a_cenonce_session_1.thumb.png :target: notebooks/td2a_cenonce_session_1.html - :ref:`td2acenoncesession1rst` - Les Dataframe se sont imposés pour manipuler les données. Avec cette façon de représenter les données, associée à des méthodes couramment utilisées, ce qu'on faisait en une ou deux boucles se fait maintenant en une seule fonction. Le module pandas est très utilisé, il existe de nombreux tutoriels, ou page de recettes pour les usages les plus fréquents : cookbook. * - .. image:: /notebooks/td2a_correction_session_1.thumb.png :target: notebooks/td2a_correction_session_1.html - :ref:`td2acorrectionsession1rst` - Opérations standards sur les dataframes (pandas et les matrices (numpy. Graphiques avec matplotlib. * - .. image:: /notebooks/td2a_visualisation.thumb.png :target: notebooks/td2a_visualisation.html - :ref:`td2avisualisationrst` - Tutoriel sur matplotlib. * - .. image:: /notebooks/pandas_iterator.thumb.png :target: notebooks/pandas_iterator.html - :ref:`pandasiteratorrst` - pandas a tendance a prendre beaucoup d'espace mémoire pour charger les données, environ trois fois plus que sa taille sur disque. Quand la mémoire n'est pas assez grande, que peut-on faire ? * - .. image:: /notebooks/pandas_iterator_correction.thumb.png :target: notebooks/pandas_iterator_correction.html - :ref:`pandasiteratorcorrectionrst` - pandas a tendance a prendre beaucoup d'espace mémoire pour charger les données, environ trois fois plus que sa taille sur disque. Quand la mémoire n'est pas assez grande, que peut-on faire ? * - .. image:: /notebooks/td2a_cenonce_session_5_donnees_non_structurees_et_programmation_fonctionnelle.thumb.png :target: notebooks/td2a_cenonce_session_5_donnees_non_structurees_et_programmation_fonctionnelle.html - :ref:`td2acenoncesession5donneesnonstructureesetprogrammationfonctionnellerst` - Calculs de moyennes et autres statistiques sur une base twitter au format JSON avec de la programmation fonctionnelle (module cytoolz. * - .. image:: /notebooks/td2a_correction_session_5_donnees_non_structurees_et_programmation_fonctionnelle_corrige.thumb.png :target: notebooks/td2a_correction_session_5_donnees_non_structurees_et_programmation_fonctionnelle_corrige.html - :ref:`td2acorrectionsession5donneesnonstructureesetprogrammationfonctionnellecorrigerst` - Calculs de moyennes et autres statistiques sur une base twitter au format JSON avec de la programmation fonctionnelle (module cytoolz. * - .. image:: /notebooks/td2a_cenonce_session_2D_jupyter.thumb.png :target: notebooks/td2a_cenonce_session_2D_jupyter.html - :ref:`td2acenoncesession2Djupyterrst` - Jupyter a été découpé en plusieurs extensions comme ipyparallel qui permet de distribuer un calcul sur plusieurs processus. Ce notebook montre comment faire sur une seule machine. * - .. image:: /notebooks/td2a_cenonce_session_5.thumb.png :target: notebooks/td2a_cenonce_session_5.html - :ref:`td2acenoncesession5rst` - Base de données relationnelles, logique SQL. * - .. image:: /notebooks/td2a_correction_session_5.thumb.png :target: notebooks/td2a_correction_session_5.html - :ref:`td2acorrectionsession5rst` - Manipulation de données avec les dataframes, jointures. Correction inachevée... * - .. image:: /notebooks/td2a_cenonce_session_2D_parallelisation_local.thumb.png :target: notebooks/td2a_cenonce_session_2D_parallelisation_local.html - :ref:`td2acenoncesession2Dparallelisationlocalrst` - Parallélisation avec joblib. * - .. image:: /notebooks/td2a_progressbar.thumb.png :target: notebooks/td2a_progressbar.html - :ref:`td2aprogressbarrst` - L'idée de ce notebook n'est pas de se servir de faire du machine learning mais de modifier la fonction *fit* pour afficher une barre d'avancement dans le notebook. Lorsque les affichages (print) sont trop nombreux et prennent tout l'écran, une barre de défilement est une solution pratique et efficace. On applique cela à un assemblage de random forest. * - .. image:: /notebooks/td2a_bigdata_memory.thumb.png :target: notebooks/td2a_bigdata_memory.html - :ref:`td2abigdatamemoryrst` - Eléments de réflexion autour des jeux de données trop grands pour tenir en mémoire. * - .. image:: /notebooks/td2a_cenonce_session_2E.thumb.png :target: notebooks/td2a_cenonce_session_2E.html - :ref:`td2acenoncesession2Erst` - Charger un dataframe depuis un fichier texte prend du temps car il faut convertir le texte en nombre. La sérialisation permet de copier le contenu depuis la mémoire vers le disque. A la prochaine utilisation, Python a juste besoin de recopier le bloc depuis le disque et de le copier sans trop le modifier en mémoire. Sérialiser un dataframe permet de le récupérer beaucoup plus vite. * - .. image:: /notebooks/td2a_correction_session_2E.thumb.png :target: notebooks/td2a_correction_session_2E.html - :ref:`td2acorrectionsession2Erst` - Sérialisation d'objets, en particulier de dataframes. Mesures de vitesse. * - .. image:: /notebooks/td2a_ml_text_features.thumb.png :target: notebooks/td2a_ml_text_features.html - :ref:`td2amltextfeaturesrst` - Ce notebook propose de voir comment incorporer des features pour voir l'amélioration des performances sur une classification binaire. * - .. image:: /notebooks/td2a_ml_text_features_correction.thumb.png :target: notebooks/td2a_ml_text_features_correction.html - :ref:`td2amltextfeaturescorrectionrst` - Ce notebook propose de voir comment incorporer des features pour voir l'amélioration des performances sur une classification binaire. * - .. image:: /notebooks/ml_crypted_data.thumb.png :target: notebooks/ml_crypted_data.html - :ref:`mlcrypteddatarst` - Comment faire du machine learning avec des données cryptées ? Ce notebook propose d'en montrer un principe exposé dans CryptoNets: Applying Neural Networks to Encrypted Data with High Throughput and Accuracy. * - .. image:: /notebooks/ml_crypted_data_correction.thumb.png :target: notebooks/ml_crypted_data_correction.html - :ref:`mlcrypteddatacorrectionrst` - Comment faire du machine learning avec des données cryptées ? Ce notebook propose d'en montrer un principe exposés CryptoNets: Applying Neural Networks to Encrypted Data with High Throughput and Accuracy. Correction. * - .. image:: /notebooks/td2a_some_nlp.thumb.png :target: notebooks/td2a_some_nlp.html - :ref:`td2asomenlprst` - Revue de méthodes de word embedding statistiques (~ NLP ou comment transformer une information textuelle en vecteurs dans un espace vectoriel (*features*) ? Deux exercices sont ajoutés à la fin. * - .. image:: /notebooks/td2a_correction_session_2C.thumb.png :target: notebooks/td2a_correction_session_2C.html - :ref:`td2acorrectionsession2Crst` - Aperçu des commandes magiques pour automatiser un peu plus les tâches courantes. * - .. image:: /notebooks/td2a_cenonce_session_2C.thumb.png :target: notebooks/td2a_cenonce_session_2C.html - :ref:`td2acenoncesession2Crst` - Pour être inventif, il faut être un peu paresseux. Cela explique parfois la syntaxe peu compréhensible mais réduite de certaines instructions. Cela explique sans doute aussi que Jupyter offre la possibilité de définir des commandes magiques qu'on peut interpréter comme des raccourcis. ``%`` pour une ligne, ``%%`` pour une cellule. 2A - Travaux dirigés - Algorithmes ---------------------------------- Enoncés algorithmiques pour le cours :ref:`l-td2a`. .. toctree:: :maxdepth: 1 :hidden: notebooks/knn_high_dimension notebooks/knn_high_dimension_correction notebooks/td2a_correction_session_6A notebooks/td2a_correction_session_6B notebooks/td2a_cenonce_session_6A notebooks/td2a_cenonce_session_6B notebooks/gentry_integer_encryption notebooks/gentry_integer_encryption_correction .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/knn_high_dimension.thumb.png :target: notebooks/knn_high_dimension.html - :ref:`knnhighdimensionrst` - La méthodes des plus proches voisins est un algorithme assez simple. Que se passe-t-il quand la dimension de l'espace des features augmente ? Comment y remédier ? Le profiling memory_profiler ou cprofile sont des outils utiles pour savoir où le temps est perdu. * - .. image:: /notebooks/knn_high_dimension_correction.thumb.png :target: notebooks/knn_high_dimension_correction.html - :ref:`knnhighdimensioncorrectionrst` - La méthodes des plus proches voisins est un algorithme assez simple qui devient très lent en grande dimension. Ce notebook propose un moyen d'aller plus vite (ACP) mais en perdant un peu en performance. * - .. image:: /notebooks/td2a_correction_session_6A.thumb.png :target: notebooks/td2a_correction_session_6A.html - :ref:`td2acorrectionsession6Arst` - Eléments de réponses pour des puzzles algorithmiques tirés de Google Code Jam et autres sites équivalents, produits scalaires, problèmes de recouvrements, soudoyer les prisonniers, découpage stratifié. * - .. image:: /notebooks/td2a_correction_session_6B.thumb.png :target: notebooks/td2a_correction_session_6B.html - :ref:`td2acorrectionsession6Brst` - Eléments de réponses pour des puzzles algorithmiques tirés de Google Code Jam et autres sites équivalents, nombres premiers, écoulement d'eau, séparation des bagarreurs, formation de binômes. * - .. image:: /notebooks/td2a_cenonce_session_6A.thumb.png :target: notebooks/td2a_cenonce_session_6A.html - :ref:`td2acenoncesession6Arst` - Puzzles algorithmiques tirés de Google Code Jam et autres sites équivalents, produits scalaires, problèmes de recouvrements, soudoyer les prisonniers, découpage stratifié. * - .. image:: /notebooks/td2a_cenonce_session_6B.thumb.png :target: notebooks/td2a_cenonce_session_6B.html - :ref:`td2acenoncesession6Brst` - Puzzles algorithmiques tirés de Google Code Jam et autres sites équivalents, nombres premiers, écoulement d'eau, séparation des bagarreurs, formation de binômes. * - .. image:: /notebooks/gentry_integer_encryption.thumb.png :target: notebooks/gentry_integer_encryption.html - :ref:`gentryintegerencryptionrst` - Un cryptage homomorphe préserve l'addition et la multiplication : une addition sur des nombres cryptés est égale au résultat crypté de l'addition sur les nombres non cryptées. Craig Gentry a proposé un tel cryptage dans son article Fully Homomorphic Encryption over the Integers. Le système de cryptage encrypte et décrypte des bits (0 ou 1). * - .. image:: /notebooks/gentry_integer_encryption_correction.thumb.png :target: notebooks/gentry_integer_encryption_correction.html - :ref:`gentryintegerencryptioncorrectionrst` - Un cryptage homomorphe préserve l'addition et la multiplication : une addition sur des nombres cryptés est égale au résultat crypté de l'addition sur les nombres non cryptées. Craig Gentry a proposé un tel cryptage dans son article Fully Homomorphic Encryption over the Integers. Le système de cryptage encrypte et décrypte des bits (0 ou 1). Correction. 2A - Travaux dirigés - Economistes (1) -------------------------------------- Enoncés plutôt dédiés aux économistes pour le cours :ref:`l-td2a`. .. toctree:: :maxdepth: 1 :hidden: notebooks/TD2A_eco_les_API notebooks/TD2A_eco_debuter_flask notebooks/TD2A_eco_API_SNCF notebooks/TD2A_eco_API_SNCF_corrige notebooks/td2a_eco_exercice_de_fin_de_seance notebooks/td2a_eco_exercices_de_manipulation_de_donnees notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_a notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_b notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_c notebooks/td2a_eco_sql notebooks/td2a_eco_sql_correction notebooks/td2_eco_rappels_1a notebooks/td2a_TD5_Traitement_automatique_des_langues_en_Python notebooks/td2a_TD5_Traitement_automatique_des_langues_en_Python_correction notebooks/TD2A_Eco_Web_Scraping notebooks/TD2A_Eco_Web_Scraping_corrige notebooks/td2a_eco_regressions_lineaires .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/TD2A_eco_les_API.thumb.png :target: notebooks/TD2A_eco_les_API.html - :ref:`TD2AecolesAPIrst` - Petite revue d'API REST. * - .. image:: /notebooks/TD2A_eco_debuter_flask.thumb.png :target: notebooks/TD2A_eco_debuter_flask.html - :ref:`TD2Aecodebuterflaskrst` - Pour aller vite, Flask est un framework de développement web en Python. Il en existe d'autres, le plus connu d'entre eux est Django. Ce notebook la création d'un site web à usage principalement privé. * - .. image:: /notebooks/TD2A_eco_API_SNCF.thumb.png :target: notebooks/TD2A_eco_API_SNCF.html - :ref:`TD2AecoAPISNCFrst` - Manipulation d'une API REST, celle de la SNCF est prise comme exemple. Exercices. * - .. image:: /notebooks/TD2A_eco_API_SNCF_corrige.thumb.png :target: notebooks/TD2A_eco_API_SNCF_corrige.html - :ref:`TD2AecoAPISNCFcorrigerst` - Manipulation d'une API REST, celle de la SNCF est prise comme exemple. Correction d'exercices. * - .. image:: /notebooks/td2a_eco_exercice_de_fin_de_seance.thumb.png :target: notebooks/td2a_eco_exercice_de_fin_de_seance.html - :ref:`td2aecoexercicedefindeseancerst` - Voici un petit exercice qui nous permet de voir à peu près toutes les opérations standards sur les dataframes avec un jeu de données issus des élections. * - .. image:: /notebooks/td2a_eco_exercices_de_manipulation_de_donnees.thumb.png :target: notebooks/td2a_eco_exercices_de_manipulation_de_donnees.html - :ref:`td2aecoexercicesdemanipulationdedonneesrst` - Trois exercices pour manipuler les donner, manipulation de texte, données vélib. * - .. image:: /notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_a.thumb.png :target: notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_a.html - :ref:`td2aecoexercicesdemanipulationdedonneescorrectionarst` - Correction d'un exercice sur la manipulation des données. * - .. image:: /notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_b.thumb.png :target: notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_b.html - :ref:`td2aecoexercicesdemanipulationdedonneescorrectionbrst` - Correction de l'exercice 2 et manipulations classiques de texte. * - .. image:: /notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_c.thumb.png :target: notebooks/td2a_eco_exercices_de_manipulation_de_donnees_correction_c.html - :ref:`td2aecoexercicesdemanipulationdedonneescorrectioncrst` - Correction de l'exercice 3 et disponibilités des velibs. * - .. image:: /notebooks/td2a_eco_sql.thumb.png :target: notebooks/td2a_eco_sql.html - :ref:`td2aecosqlrst` - SQL permet de créer des tables, de rechercher, d'ajouter, de modifier ou de supprimer des données dans les bases de données. Un peu ce que vous ferez bientôt tous les jours. C'est un langage de management de données, pas de nettoyage, d’analyse ou de statistiques avancées. * - .. image:: /notebooks/td2a_eco_sql_correction.thumb.png :target: notebooks/td2a_eco_sql_correction.html - :ref:`td2aecosqlcorrectionrst` - Correction d'exercices sur SQL. * - .. image:: /notebooks/td2_eco_rappels_1a.thumb.png :target: notebooks/td2_eco_rappels_1a.html - :ref:`td2ecorappels1arst` - pandas et numpy sont essentiels pour manipuler les données. C'est ce que rappelle ce notebook. Voir aussi Essential Cheat Sheets for Machine Learning and Deep Learning Engineers. * - .. image:: /notebooks/td2a_TD5_Traitement_automatique_des_langues_en_Python.thumb.png :target: notebooks/td2a_TD5_Traitement_automatique_des_langues_en_Python.html - :ref:`td2aTD5TraitementautomatiquedeslanguesenPythonrst` - Aperçu de ce qu'est le traitement automatique du langage naturel (NLP et quelques exercices. * - .. image:: /notebooks/td2a_TD5_Traitement_automatique_des_langues_en_Python_correction.thumb.png :target: notebooks/td2a_TD5_Traitement_automatique_des_langues_en_Python_correction.html - :ref:`td2aTD5TraitementautomatiquedeslanguesenPythoncorrectionrst` - Correction d'exercices liés au traitement automatique du langage naturel. * - .. image:: /notebooks/TD2A_Eco_Web_Scraping.thumb.png :target: notebooks/TD2A_Eco_Web_Scraping.html - :ref:`TD2AEcoWebScrapingrst` - Sous ce nom se cache une pratique très utile pour toute personne souhaitant travailler sur des informations disponibles en ligne, mais n'existant pas forcément sous la forme d'un tableau *Excel*... Bref, il s'agit de récupérer des informations depuis *Internet*. * - .. image:: /notebooks/TD2A_Eco_Web_Scraping_corrige.thumb.png :target: notebooks/TD2A_Eco_Web_Scraping_corrige.html - :ref:`TD2AEcoWebScrapingcorrigerst` - Il faut récupérer automatiquement des images de pokémon depuis le site pokemondb.net. * - .. image:: /notebooks/td2a_eco_regressions_lineaires.thumb.png :target: notebooks/td2a_eco_regressions_lineaires.html - :ref:`td2aecoregressionslineairesrst` - On peut réaliser des régressions linéaires de beaucoup de manières avec Python. On en a retenu 2, statsmodels et scikit-learn. Les deux librairies ont chacunes leurs qualités et leurs défauts, sachez que l'une est plus orienté data science et l'autre plus pour des économistes. 2A - Travaux dirigés - Economistes (2) -------------------------------------- Enoncés plutôt dédiés aux économistes pour le cours :ref:`l-td2a`. Ces énoncés sont également moins testés et peuvent ne plus être à jour. .. toctree:: :maxdepth: 1 :hidden: notebooks/td2a_eco_NLP_tf_idf_ngrams_LDA_word2vec_sur_des_extraits_litteraires notebooks/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres notebooks/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres_correction notebooks/td2a_Seance_7_Analyse_de_textes notebooks/td2a_Seance_7_Analyse_de_textes_correction .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td2a_eco_NLP_tf_idf_ngrams_LDA_word2vec_sur_des_extraits_litteraires.thumb.png :target: notebooks/td2a_eco_NLP_tf_idf_ngrams_LDA_word2vec_sur_des_extraits_litteraires.html - :ref:`td2aecoNLPtfidfngramsLDAword2vecsurdesextraitslitterairesrst` - Dans ce TD, nous allons voir comment travailler avec du texte, à partir d'extraits de textes de trois auteurs, Edgar Allan Poe, (EAP), HP Lovecraft (HPL), et Mary Wollstonecraft Shelley (MWS). * - .. image:: /notebooks/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres.thumb.png :target: notebooks/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres.html - :ref:`td2aeco5dTravaillerdutextelesexpressionsregulieresrst` - Chercher un mot dans un texte est une tâche facile, c'est l'objectif de la méthode find attachée aux chaînes de caractères, elle suffit encore lorsqu'on cherche un mot au pluriel ou au singulier mais il faut l'appeler au moins deux fois pour chercher ces deux formes. Pour des expressions plus compliquées, il est conseillé d'utiliser les expressions régulières. C'est une fonctionnalité qu'on retrouve dans beaucoup de langages. C'est une forme de grammaire qui permet de rechercher des expressions. * - .. image:: /notebooks/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres_correction.thumb.png :target: notebooks/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres_correction.html - :ref:`td2aeco5dTravaillerdutextelesexpressionsregulierescorrectionrst` - Chercher un mot dans un texte est une tâche facile, c'est l'objectif de la méthode find attachée aux chaînes de caractères, elle suffit encore lorsqu'on cherche un mot au pluriel ou au singulier mais il faut l'appeler au moins deux fois pour chercher ces deux formes. Pour des expressions plus compliquées, il est conseillé d'utiliser les expressions régulières. C'est une fonctionnalité qu'on retrouve dans beaucoup de langages. C'est une forme de grammaire qui permet de rechercher des expressions. * - .. image:: /notebooks/td2a_Seance_7_Analyse_de_textes.thumb.png :target: notebooks/td2a_Seance_7_Analyse_de_textes.html - :ref:`td2aSeance7Analysedetextesrst` - Analyse de texte, TF-IDF, LDA, moteur de recherche, expressions régulières. * - .. image:: /notebooks/td2a_Seance_7_Analyse_de_textes_correction.thumb.png :target: notebooks/td2a_Seance_7_Analyse_de_textes_correction.html - :ref:`td2aSeance7Analysedetextescorrectionrst` - Analyse de texte, TF-IDF, LDA, moteur de recherche, expressions régulières (correction). 2A - Travaux dirigés - Machine Learning --------------------------------------- Enoncés plutôt dédiés aux data scientistes pour le cours :ref:`l-td2a`. .. toctree:: :maxdepth: 1 :hidden: notebooks/td2a_correction_cl_reg_anomaly notebooks/td2a_enonce_cl_reg_anomaly notebooks/td2a_sentiment_analysis notebooks/td2a_sentiment_analysis_correction notebooks/td2a_cenonce_session_3B notebooks/td2a_correction_session_3B notebooks/ml_cc_machine_learning_problems2 notebooks/td2a_clustering notebooks/td2a_clustering_correction notebooks/ml_b_imbalanced notebooks/ml_ccc_machine_learning_interpretabilite notebooks/td2a_cenonce_session_4A notebooks/td2a_correction_session_4A notebooks/td2a_pipeline_tree_selection_correction notebooks/td2a_pipeline_tree_selection_enonce notebooks/ml_c_machine_learning_problems notebooks/td2a_tree_selection_correction notebooks/td2a_tree_selection_enonce notebooks/td2a_cenonce_session_3A notebooks/td2a_correction_session_3A notebooks/td2a_timeseries notebooks/td2a_timeseries_correction notebooks/ml_a_tree_overfitting notebooks/gradient_boosting notebooks/ml_lasso_rf_grid_search_correction notebooks/ml_lasso_rf_grid_search_enonce notebooks/td2a_ethics notebooks/td2a_ethics_correction notebooks/ml_scikit_learn_simple notebooks/ml_scikit_learn_simple_correction notebooks/seasonal_timeseries .. list-table:: :header-rows: 0 :widths: 3 5 15 * - .. image:: /notebooks/td2a_correction_cl_reg_anomaly.thumb.png :target: notebooks/td2a_correction_cl_reg_anomaly.html - :ref:`td2acorrectionclreganomalyrst` - Le jeu de données Wine Quality Data Set contient 5000 vins décrits par leurs caractéristiques chimiques et évalués par un expert. Peut-on s'approcher de l'expert à l'aide d'un modèle de machine learning. * - .. image:: /notebooks/td2a_enonce_cl_reg_anomaly.thumb.png :target: notebooks/td2a_enonce_cl_reg_anomaly.html - :ref:`td2aenonceclreganomalyrst` - Le jeu de données Wine Quality Data Set contient 5000 vins décrits par leurs caractéristiques chimiques et évalués par un expert. Peut-on s'approcher de l'expert à l'aide d'un modèle de machine learning. * - .. image:: /notebooks/td2a_sentiment_analysis.thumb.png :target: notebooks/td2a_sentiment_analysis.html - :ref:`td2asentimentanalysisrst` - C'est désormais un problème classique de machine learning. D'un côté, du texte, de l'autre une appréciation, le plus souvent binaire, positive ou négative mais qui pourrait être graduelle. * - .. image:: /notebooks/td2a_sentiment_analysis_correction.thumb.png :target: notebooks/td2a_sentiment_analysis_correction.html - :ref:`td2asentimentanalysiscorrectionrst` - C'est désormais un problème classique de machine learning. D'un côté, du texte, de l'autre une appréciation, le plus souvent binaire, positive ou négative mais qui pourrait être graduelle. * - .. image:: /notebooks/td2a_cenonce_session_3B.thumb.png :target: notebooks/td2a_cenonce_session_3B.html - :ref:`td2acenoncesession3Brst` - Classification, régression, visualisation avec des méthodes ensemblistes (arbres, forêts, ...). * - .. image:: /notebooks/td2a_correction_session_3B.thumb.png :target: notebooks/td2a_correction_session_3B.html - :ref:`td2acorrectionsession3Brst` - Méthodes ensemblistes, features importance, correction. * - .. image:: /notebooks/ml_cc_machine_learning_problems2.thumb.png :target: notebooks/ml_cc_machine_learning_problems2.html - :ref:`mlccmachinelearningproblems2rst` - Avantages et inconvénients des méthodes à gradient. Exercice sur la rotation de features avant l'utilisation d'une random forest. * - .. image:: /notebooks/td2a_clustering.thumb.png :target: notebooks/td2a_clustering.html - :ref:`td2aclusteringrst` - Ce notebook utilise les données des vélos de Chicago Divvy Data. Il s'inspire du challenge créée pour découvrir les habitudes des habitantes de la ville City Bike. L'idée est d'explorer plusieurs algorithmes de clustering et de voire comment trafiquer les données pour les faire marcher et en tirer quelques apprentissages. * - .. image:: /notebooks/td2a_clustering_correction.thumb.png :target: notebooks/td2a_clustering_correction.html - :ref:`td2aclusteringcorrectionrst` - Ce notebook utilise les données des vélos de Chicago Divvy Data. Il s'inspire du challenge créée pour découvrir les habitudes des habitantes de la ville City Bike. L'idée est d'explorer plusieurs algorithmes de clustering et comment trafiquer les données pour les faire marcher. * - .. image:: /notebooks/ml_b_imbalanced.thumb.png :target: notebooks/ml_b_imbalanced.html - :ref:`mlbimbalancedrst` - Un jeu de données *imbalanced* signifie qu'une classe est sous représentée dans un problème de classification. Lire 8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset. * - .. image:: /notebooks/ml_ccc_machine_learning_interpretabilite.thumb.png :target: notebooks/ml_ccc_machine_learning_interpretabilite.html - :ref:`mlcccmachinelearninginterpretabiliterst` - Plus un modèle de machine learning contient de coefficients, moins sa décision peut être interprétée. Comment contourner cet obstacle et comprendre ce que le modèle a appris ? Notion de feature importance. * - .. image:: /notebooks/td2a_cenonce_session_4A.thumb.png :target: notebooks/td2a_cenonce_session_4A.html - :ref:`td2acenoncesession4Arst` - Prédire la souscription d'un contrat sur le jeu de données Bank Marketing Data Set . * - .. image:: /notebooks/td2a_correction_session_4A.thumb.png :target: notebooks/td2a_correction_session_4A.html - :ref:`td2acorrectionsession4Arst` - Classification binaire, correction. * - .. image:: /notebooks/td2a_pipeline_tree_selection_correction.thumb.png :target: notebooks/td2a_pipeline_tree_selection_correction.html - :ref:`td2apipelinetreeselectioncorrectionrst` - Le modèle Lasso permet de sélectionner des variables, une forêt aléatoire produit une prédiction comme étant la moyenne d'arbres de régression. Cet aspect a été abordé dans le notebook Reduction d'une forêt aléatoire. On cherche à automatiser le processus. * - .. image:: /notebooks/td2a_pipeline_tree_selection_enonce.thumb.png :target: notebooks/td2a_pipeline_tree_selection_enonce.html - :ref:`td2apipelinetreeselectionenoncerst` - Le modèle Lasso permet de sélectionner des variables, une forêt aléatoire produit une prédiction comme étant la moyenne d'arbres de régression. Cet aspect a été abordé dans le notebook Reduction d'une forêt aléatoire. On cherche à automatiser le processus. * - .. image:: /notebooks/ml_c_machine_learning_problems.thumb.png :target: notebooks/ml_c_machine_learning_problems.html - :ref:`mlcmachinelearningproblemsrst` - Revue des problèmes classiques de machines learning, classification, régression, ranking. Exercices sur la classification multi-classes. * - .. image:: /notebooks/td2a_tree_selection_correction.thumb.png :target: notebooks/td2a_tree_selection_correction.html - :ref:`td2atreeselectioncorrectionrst` - Le modèle Lasso permet de sélectionner des variables, une forêt aléatoire produit une prédiction comme étant la moyenne d'arbres de régression. Et si on mélangeait les deux ? * - .. image:: /notebooks/td2a_tree_selection_enonce.thumb.png :target: notebooks/td2a_tree_selection_enonce.html - :ref:`td2atreeselectionenoncerst` - Le modèle Lasso permet de sélectionner des variables, une forêt aléatoire produit une prédiction comme étant la moyenne d'arbres de régression. Et si on mélangeait les deux ? * - .. image:: /notebooks/td2a_cenonce_session_3A.thumb.png :target: notebooks/td2a_cenonce_session_3A.html - :ref:`td2acenoncesession3Arst` - ACP, CAH, régression lineaire. * - .. image:: /notebooks/td2a_correction_session_3A.thumb.png :target: notebooks/td2a_correction_session_3A.html - :ref:`td2acorrectionsession3Arst` - ACP, CAH, régression linéaire, correction. * - .. image:: /notebooks/td2a_timeseries.thumb.png :target: notebooks/td2a_timeseries.html - :ref:`td2atimeseriesrst` - Prédictions sur des séries temporelles et autres opérations classiques. * - .. image:: /notebooks/td2a_timeseries_correction.thumb.png :target: notebooks/td2a_timeseries_correction.html - :ref:`td2atimeseriescorrectionrst` - Prédictions sur des séries temporelles. * - .. image:: /notebooks/ml_a_tree_overfitting.thumb.png :target: notebooks/ml_a_tree_overfitting.html - :ref:`mlatreeoverfittingrst` - L'overfitting ou surapprentissage apparaît lorsque les prédictions sur de nouvelles données sont nettement moins bonnes que celles obtenus sur la base d'apprentissage. Les forêts aléatoires sont moins sujettes à l'overfitting que les arbres de décisions qui les composent. Quelques illustrations. * - .. image:: /notebooks/gradient_boosting.thumb.png :target: notebooks/gradient_boosting.html - :ref:`gradientboostingrst` - Le notebook explore l'algorithme du Gradient Boosting. * - .. image:: /notebooks/ml_lasso_rf_grid_search_correction.thumb.png :target: notebooks/ml_lasso_rf_grid_search_correction.html - :ref:`mllassorfgridsearchcorrectionrst` - Le notebook explore l'optimisation des hyper paramaètres du modèle LassoRandomForestRegressor, et fait varier le nombre d'arbre et le paramètres alpha. * - .. image:: /notebooks/ml_lasso_rf_grid_search_enonce.thumb.png :target: notebooks/ml_lasso_rf_grid_search_enonce.html - :ref:`mllassorfgridsearchenoncerst` - Le notebook explore l'optimisation des hyper paramaètres du modèle LassoRandomForestRegressor, et fait varier le nombre d'arbre et le paramètres alpha. * - .. image:: /notebooks/td2a_ethics.thumb.png :target: notebooks/td2a_ethics.html - :ref:`td2aethicsrst` - Ce notebook est inspiré de l'article FairTest: Discovering Unwarranted Associations in Data-Driven Applications et propose d'étudier une façon de vérifier qu'un modèle ou une métrique n'est pas biaisé par rapport à certains critères. * - .. image:: /notebooks/td2a_ethics_correction.thumb.png :target: notebooks/td2a_ethics_correction.html - :ref:`td2aethicscorrectionrst` - Ce notebook est inspiré de l'article FairTest: Discovering Unwarranted Associations in Data-Driven Applications et propose d'étudier une façon de vérifier qu'un modèle ou une métrique n'est pas biaisé par rapport à certains critères. * - .. image:: /notebooks/ml_scikit_learn_simple.thumb.png :target: notebooks/ml_scikit_learn_simple.html - :ref:`mlscikitlearnsimplerst` - Quelques exercices simples sur *scikit-learn*. Le notebook est long pour ceux qui débutent en machine learning et sans doute sans suspens pour ceux qui en ont déjà fait. * - .. image:: /notebooks/ml_scikit_learn_simple_correction.thumb.png :target: notebooks/ml_scikit_learn_simple_correction.html - :ref:`mlscikitlearnsimplecorrectionrst` - Quelques exercices simples sur *scikit-learn*. Le notebook est long pour ceux qui débutent en machine learning et sans doute sans suspens pour ceux qui en ont déjà fait. * - .. image:: /notebooks/seasonal_timeseries.thumb.png :target: notebooks/seasonal_timeseries.html - :ref:`seasonaltimeseriesrst` - Ce notebook présente quelques étapes simples pour une série temporelle. La plupart utilise le module statsmodels.tsa. .. toctree:: :hidden: all_notebooks_coverage