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.

Notebooks Coverage

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 x^nn 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.

_images/tableau_contingence.thumb.png 1A.1 - Calculer un chi 2 sur un tableau de contingence $chi_2$ et tableau de contingence, avec numpy, avec scipy ou sans.
_images/structures_donnees_conversion.thumb.png 1A.1 - D’une structure de données à l’autre Ce notebook s’amuse à passer d’une structure de données à une autre, d’une liste à une dictionnaire, d’une liste de liste à un dictionnaire, avec toujours les mêmes données. list, dict, tuple.
_images/histogramme_rapide.thumb.png 1A.1 - Histogramme et dictionnaire 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.
_images/code_liste_tuple.thumb.png 1A.1 - Liste, tuple, ensemble, dictionnaire, liste chaînée, coût des opérations Exemples de containers, list, tuple, set, dict.
_images/code_multinomial.thumb.png 1A.1 - Simuler une loi multinomiale On part d’une loi uniforme et on simule une loi multinomiale.
_images/exercice_echelle.thumb.png 1A.algo - Calculer le nombre de façons de monter une échelle. 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.
_images/exercice_xn.thumb.png 1A.algo - Calculer x**n le plus rapidement possible 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.
_images/exercice_morse.thumb.png 1A.algo - Décoder du Morse sans espaces 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.
_images/exercice_plus_grande_somme.thumb.png 1A.algo - La sous-séquence de plus grande somme Ce problème est connu sur le nom de Maximum subarray problem. Notion abordée : programmation dynamique.
_images/recherche_dichotomique.thumb.png 1A.algo - Recherche dichotomique Recherche dichotomique illustrée. Extrait de Recherche dichotomique, récursive, itérative et le logarithme.
_images/tri_nlnd.thumb.png 1A.algo - Tri plus rapide que prévu 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.
_images/profiling_example.thumb.png 1A.soft - Exemple de profiling Profiling et fonction pdf. Le profiling est utilisé pour mesurer le temps que passe un programme dans chaque fonction.

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.

_images/seance_5_intro_et_json.thumb.png 2A.i - Données non structurées, programmation fonctionnelle 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.
_images/seance_5_dask.thumb.png 2A.i - Données non structurées, programmation fonctionnelle : dask 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.
_images/dataframe_matrix_speed.thumb.png 2A.i - Mesures de vitesse sur les dataframes Lire un dataframe avec un itérateur quand on ne connaît pas sa taille, lire un array avec un itérateur.
_images/seance_5_prog_fonctionnelle.thumb.png 2A.i - programmation fonctionnelle 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.
_images/bayesian_with_python.thumb.png 2A.ml - Bayesian models with Python Modèles de mélanges de lois. Statistiques bayésiennes. bayespy, scikit-learn.
_images/ml_timeseries_base.thumb.png 2A.ml - Timeseries et machine learning Série temporelle et prédiction. Module statsmodels.
_images/notebook_convert.thumb.png 2A.soft - Convert a notebook into a document A couple of tricks to convert notebook such as convert a notebook into RST or HTML, get the notebook name.
_images/jupyter_custom_magics.thumb.png 2A.soft - Custom Magics for Jupyter 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.
_images/git_notebook.thumb.png 2A.soft - Git depuis le notebook 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.
_images/python_csharp.thumb.png 2A.soft - Python et C Sharp Comment compiler et exécuter du code C# depuis un notebook? Avec pythonnet.
_images/python_r.thumb.png 2A.soft - R et notebooks Exécuter du code R depuis un notebook python avec le module rpy2.
_images/cffi_linear_regression.thumb.png Optimisation de code avec cffi, numba, cython 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.

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.

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.

_images/td2a_eco_competition_statsdesc.thumb.png 2A.ml - 2016 - Compétition - Importation des données 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.
_images/td2a_eco_competition_comparer_classifieurs.thumb.png 2A.ml - 2016 - Compétition - Préparation des données 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.
_images/td2a_eco_competition_modeles_logistiques.thumb.png 2A.ml - 2016 - Compétition ENSAE - Premiers modèles 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.

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.

_images/prepare_data_2017.thumb.png 2A.ml - 2017 - Préparation des données 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.

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.

_images/interro_rapide_20_minutes_2014_10.thumb.png 1A.e - Correction de l’interrogation écrite du 10 octobre 2014 dictionnaire et coût algorithmique
_images/interro_rapide_20_minutes_2014_11.thumb.png 1A.e - Correction de l’interrogation écrite du 14 novembre 2014 coût algorithmique, calcul de séries mathématiques
_images/interro_rapide_20_minutes_2014_12.thumb.png 1A.e - Correction de l’interrogation écrite du 14 novembre 2014 dictionnaires
_images/interro_rapide_20_minutes_2014_09.thumb.png 1A.e - Correction de l’interrogation écrite du 26 septembre 2014 chaîne de caractères, tri, fonction
_images/interro_rapide_20_minutes_2015_09.thumb.png 1A.e - Correction de l’interrogation écrite du 26 septembre 2015 tests, boucles, fonctions
_images/interro_rapide_20_minutes_2015_11.thumb.png 1A.e - Correction de l’interrogation écrite du 6 novembre 2015 listes et dictionnaires
_images/td_note_2015_rattrapage_enonce.thumb.png 1A.e - TD noté 2015 rattrapage (énoncé, écrit et oral) 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.
_images/td_note_2016.thumb.png 1A.e - TD noté, 11 décembre 2015 Calcul des intérêt d’un emprunt pour acheter un appartement, stratégie d’investissement.
_images/td_note_2017.thumb.png 1A.e - TD noté, 16 décembre 2016 Régression linéaire avec des variables catégorielles.
_images/td_note_2017_2.thumb.png 1A.e - TD noté, 21 février 2017 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.
_images/td_note_2013_coloriage_correction.thumb.png 1A.e - TD noté, 27 novembre 2012 (coloriage, correction) Coloriage d’une image, dessin d’une spirale avec matplotlib.
_images/td_note_2013_bout_de_code_coloriage.thumb.png 1A.e - TD noté, 27 novembre 2012 (éléments de code pour le coloriage) Coloriage d’une image, dessin d’une spirale avec matplotlib : éléments de code données avec l’énoncé.
_images/td_note_2015.thumb.png 1A.e - TD noté, 5 décembre 2014 Parcours de chemins dans un graphe acyclique (arbre).

Exposés

Ces notebooks ne sont pas des exercices. Ils viennent principalement illuster la partie Découvrir et abordent des problèmes algorithmiques dont quelques solutions sont implémentées.

_images/expose_vigenere.thumb.png 1A.algo - Casser le code de Vigenère 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.
_images/BJKST.thumb.png 2A.algo - Algorithmes de streaming : généralités 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.
_images/hash_distribution.thumb.png 2A.algo - Hash et distribution 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.
_images/expose_einstein_riddle.thumb.png 2A.algo - L’énigme d’Einstein et sa résolution Résolution de l’énigme L’énigme d’Einstein. Implémentatin d’une solution à base de règles.
_images/ml_rue_paris_parcours.thumb.png 2A.algo - Parcourir les rues de Paris Algorithme de plus courts chemins dans un graphe. Calcul d’un chemin comparé au calcul de tous les chemins les plus courts.
_images/expose_TSP.thumb.png 2A.algo - Réflexions autour du voyage de commerce (TSP) 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.
_images/ml_huge_datasets.thumb.png 2A.i - Huge datasets, datasets hiérarchiques 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.
_images/ml_table_mortalite.thumb.png 2A.i - Table de mortalité dans plusieurs containers Pas de calcul d’espérence de vie, seulement différentes façons de lire les données d’une table de mortalité.
_images/expose_velib.thumb.png 2A.ml - Déterminer la vitesse moyenne des vélib Ce notebook explicite la solution proposée pour la coding party du 22 mai 2014. L’enjeu était de calculer la vitesse moyenne des velib.
_images/ml_features_model.thumb.png 2A.ml - Features ou modèle 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 ?
_images/expose_graphe_et_map_reduce.thumb.png 3A.mr - Graphes et Map Reduce 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.
_images/expose_rwr_recommandation.thumb.png 3A.mr - Random Walk with Restart (système de recommandations) 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.

Année 2014-2015

Ce fut la première année où nous avons demandé aux étudiants de réaliser un projet de programmation distribué. Voici quelques examples écrits en PIG (Hadoop, MapReduce). Il reste quelques imperfections que je vous laisse le soin de découvrir.

_images/2015_factorisation_matrice.thumb.png 3A.mr - 2015 - Factorisation de matrice avec PIG Ce travail s’appuie sur l’article A Fast Distributed Stochastic Gradient Descent Algorithm for Matrix Factorization, Fanglin Li, BinWu, Liutong Xu, Chuan Shi, and Jing Shi. Auteurs : Théo Gantzer, Anna Korba.
_images/2015_kmeans.thumb.png 3A.mr - 2015 - Kmeans avec PIG k-means est un algorithme de clustering relativement simple qu’on cherche à paralléliser. Auteurs : P. Atalaya, M. Gubri M.
_images/2015_page_rank.thumb.png 3A.mr - 2015 - PageRank avec PIG L’algorithme PageRank propose une mesure de la pertinence d’un site. Il fut inventé par les fondateurs de google. L’implémentation proposée ici s’est appuyée sur celle proposée dans Data-Intensive Text Processing with MapReduce, page 106. L’algorithme est d’abord appliqué sur un jeu de test (plus petit et permettant un développement rapide) puis à un jeu plus consistent : Google web graph. Auteurs : M. Amestoy M., A. Auffret.

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.

_images/solution_2016_credit_clement.thumb.png 2016 - Une solution à la compétition de machine learning 2A 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.

_images/dimensions_reduction.thumb.png Réduction des dimensions On peut souhaiter réduire de nombre de dimensions d’un jeu de données :

2A - sklearn_ensae_course

Ces exemples viennent des lectures proposées par Gaël Varoquaux A l”ENSAE : sklearn_ensae_course/notebooks/figures.

_images/00_introduction_machine_learning_and_data.thumb.png 2A.ML101.0: What is machine learning? 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.
_images/01_data_manipulation.thumb.png 2A.ML101.1: Introduction to data manipulation with scientific Python In this section we’ll go through the basics of the scientific Python stack for data manipulation: using numpy and matplotlib.
_images/02_basic_of_machine_learning_with_scikit-learn.thumb.png 2A.ML101.2: Basic principles of machine learning with scikit-learn Classification and regression.
_images/03_supervised_classification.thumb.png 2A.ML101.3: Supervised Learning: Classification of Handwritten Digits 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.
_images/04_supervised_regression.thumb.png 2A.ML101.4: Supervised Learning: Regression of Housing Data Here we’ll do a short example of a regression problem: learning a continuous value from a set of features.
_images/05_measuring_prediction_performance.thumb.png 2A.ML101.5: Measuring prediction performance Source: Course on machine learning with scikit-learn by Gaël Varoquaux
_images/06_unsupervised_dimreduction.thumb.png 2A.ML101.6: Unsupervised Learning: Dimensionality Reduction and Visualization 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.
_images/07_application_to_face_recognition.thumb.png 2A.ML101.7: Example from Image Processing Here we’ll take a look at a simple facial recognition example.
_images/08_validation_and_learning_curves.thumb.png 2A.ML101.8: Parameter selection, Validation & Testing 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.

_images/td1a_cenonce_session1.thumb.png 1A.0 - Premiers pas en Python Questions très simples pour ceux qui savent coder, quelques éléments principaux du langage Python pour les autres.
_images/td1a_correction_session1.thumb.png 1A.0 - Premiers pas en Python (correction) La partie 1 ne nécessite pas de correction.
_images/pp_exo_deviner_un_nombre.thumb.png 1A.1 - Deviner un nombre aléatoire Notebook sur un des premiers programmes qu’on écrit quand on apprend à programmer. Une boucle, un test.
_images/pp_exo_deviner_un_nombre_correction.thumb.png 1A.1 - Deviner un nombre aléatoire (correction) On reprend la fonction introduite dans l’énoncé et qui permet de saisir un nombre.
_images/td1a_cenonce_session3.thumb.png 1A.1 - Dictionnaires, fonctions, code de Vigenère Le dictionnaire est une structure de données très utilisée. Elle est illustrée pour un problème de décryptage.
_images/td1a_correction_session3.thumb.png 1A.1 - Dictionnaires, fonctions, code de Vigenère (correction) 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.
_images/integrale_rectangle.thumb.png 1A.1 - Intégrale et la méthode des rectangles Approximation du calcul d’une intégrale par la méthode des rectangles
_images/integrale_rectangle_correction.thumb.png 1A.1 - Intégrale et la méthode des rectangles - correction Approximation du calcul d’une intégrale par la méthode des rectangles.
_images/td1a_cenonce_session2.thumb.png 1A.1 - Variables, boucles, tests Répétitions de code, exécuter une partie plutôt qu’une autre.
_images/td1a_correction_session2.thumb.png 1A.1 - Variables, boucles, tests (correction) Boucles, tests, correction.
_images/j2048.thumb.png 1A.2 - 2048 - stratégie gagnante Le jeu 2048 est assez simple et fut populaire en son temps. Comment imaginer une stratégie qui dépasser le 2048 ?
_images/j2048_correction.thumb.png 1A.2 - 2048 - stratégie gagnante - correction Le jeu 2048 est assez simple et fut populaire en son temps. Comment imaginer une stratégie qui dépasser le 2048 ?
_images/td1a_cenonce_session6.thumb.png 1A.2 - Classes, héritage L’héritage permet de réécrire certaines parties du code sans pour autant enlever les anciennes versions toujours utilisées.
_images/td1a_correction_session6.thumb.png 1A.2 - Classes, héritage (correction) Correction.
_images/td1a_cenonce_session5.thumb.png 1A.2 - Classes, méthodes, attributs, opérateurs et carré magique Les classes proposent une façon différente de structurer un programme informatique. Pas indispensable mais souvent élégant.
_images/td1a_correction_session5.thumb.png 1A.2 - Classes, méthodes, attributs, opérateurs et carré magique (correction) Correction.
_images/texte_langue.thumb.png 1A.2 - Deviner la langue d’un texte Comment deviner la langue d’un texte sans savoir lire la langue ? Ce notebook aborde les dictionnaires, les fichiers et les graphiques.
_images/texte_langue_correction.thumb.png 1A.2 - Deviner la langue d’un texte (correction) Calcul d’un score pour détecter la langue d’un texte. Ce notebook aborde les dictionnaires, les fichiers et les graphiques (correction).
_images/td1a_cenonce_session4.thumb.png 1A.2 - Modules, fichiers, expressions régulières 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.
_images/td1a_correction_session4.thumb.png 1A.2 - Modules, fichiers, expressions régulières (correction) Correction.

1A - Travaux dirigés autour des algorithmes

Problèmes de graphes, d’optimisation, ces notebooks traitent principalement d’algorithmes.

_images/td1a_cenonce_session8.thumb.png 1A.algo - Arbre et Trie 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.
_images/td1a_correction_session8.thumb.png 1A.algo - Arbre et Trie (correction) Correction.
_images/BJKST_enonce.thumb.png 1A.algo - BJKST - calculer le nombre d’éléments distincts 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.
_images/graph4exos.thumb.png 1A.algo - Des problèmes de graphes Découvrir les graphes avec des problèmes pas trop compliqués. Composantes connexes, plus court chemin et…
_images/td1a_cenonce_session7_edition.thumb.png 1A.algo - La distance d’édition La distance d’édition ou de Levenshtein calcule une distance entre deux séquences. L’algorithme utilise la programmation dynamique.
_images/td1a_correction_session7_edition.thumb.png 1A.algo - La distance d’édition (correction) Correction.
_images/td1a_cenonce_session9.thumb.png 1A.algo - Optimisation sous contrainte 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.
_images/td1a_correction_session9.thumb.png 1A.algo - Optimisation sous contrainte (correction) Un peu plus de détails dans cet article : Damped Arrow-Hurwicz algorithm for sphere packing.
_images/td1a_cenonce_session8_wikiroot.thumb.png 1A.algo - Parcours dans un graphe (wikipédia) Parcourir le graphe formé par les liens wikipédia… Le notebook explore également le web scrapping.
_images/td1a_correction_session8_wikiroot.thumb.png 1A.algo - Parcours dans un graphe (wikipédia) - correction 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.
_images/graph1exo_parcours.thumb.png 1A.algo - Parcours de graphe On veut compter les arcs, les noeuds d’un graphe. On utilise également les classes.
_images/graph1exo_parcours_correction.thumb.png 1A.algo - Parcours de graphe - correction Algorithme assez simple sur les graphes (correction).
_images/td1a_cenonce_session7.thumb.png 1A.algo - Programmation dynamique et plus court chemin 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.
_images/td1a_correction_session7.thumb.png 1A.algo - Programmation dynamique et plus court chemin (correction) Correction.
_images/td1a_quicksort.thumb.png 1A.algo - Quicksort 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.
_images/graph_spectral_clustering.thumb.png 1A.algo - Spectral Clustering On veut couper un graphe en deux en coupant le moindre d’arcs possible. C’est un algorithme de clustering.
_images/graph_spectral_clustering_correction.thumb.png 1A.algo - Spectral Clustering - correction 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é.
_images/td1a_cenonce_session4_5_jaccard.thumb.png 1A.algo - distance de Jaccard (dictionnaires) 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.
_images/td1a_correction_session4_5_jaccard.thumb.png 1A.algo - distance de Jaccard (dictionnaires) - correction De la distance de Jaccard à la distance de Levenshtein.
_images/td1a_sobel.thumb.png 1A.algo - filtre de Sobel Le filtre de Sobel est utilisé pour calculer des gradients dans une image. L’image ainsi filtrée révèle les forts contrastes.
_images/td1a_sobel_correction.thumb.png 1A.algo - filtre de Sobel - correction Correction.
_images/td1a_plus_grande_somme.thumb.png 1A.algo - la sous-séquence de plus grande somme Un exercice classique : trouver la sous-séquence de plus grande somme.
_images/td1a_plus_grande_somme_correction.thumb.png 1A.algo - la sous-séquence de plus grande somme - correction Un exercice classique : trouver la sous-séquence de plus grande somme et sa correction.
_images/td1a_quicksort_correction.thumb.png 1A.algo - quicksort - correction 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.

_images/td1a_cenonce_session_10.thumb.png 1A.data - DataFrame et Matrice 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.
_images/td1a_correction_session_10.thumb.png 1A.data - DataFrame et Matrice (correction) Correction.
_images/decorrelation.thumb.png 1A.data - Décorrélation On construit des variables corrélées gaussiennes et on cherche à construire des variables décorrélées en utilisant le calcul matriciel.
_images/decorrelation_correction.thumb.png 1A.data - Décorrélation - correction On construit des variables corrélées gaussiennes et on cherche à construire des variables décorrélées en utilisant le calcul matriciel. (correction)
_images/td1a_cenonce_session_12.thumb.png 1A.data - Visualisation des données Les tableaux et les graphes sont deux outils incontournables des statisticiens. Petite revue des graphes.
_images/td1a_correction_session_12.thumb.png 1A.data - visualisation des données - correction Correction.

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.

_images/td1a_cython_edit.thumb.png 1A.soft - Calcul numérique et Cython 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.
_images/td1a_cython_edit_correction.thumb.png 1A.soft - Calcul numérique et Cython - correction  
_images/td1a_sql.thumb.png 1A.soft - Notions de SQL Premiers pas avec le langage SQL.
_images/td1a_sql_correction.thumb.png 1A.soft - Notions de SQL - correction Correction des exercices du premier notebooks relié au SQL.
_images/td1a_python_csharp.thumb.png 1A.soft - Python et CSharp  
_images/td1a_unit_test_ci.thumb.svg 1A.soft - Tests unitaires, setup et ingéniérie logiciel 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 Python pour un Data Scientist / Economiste.

_images/td2a_cenonce_session_2A.thumb.png 2A.data - Calcul Matriciel, Optimisation 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.
_images/td2a_correction_session_2A.thumb.png 2A.data - Calcul Matriciel, Optimisation - correction Calcul matriciel (numpy.
_images/td2a_cenonce_session_1.thumb.png 2A.data - DataFrame et Graphes 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.
_images/td2a_correction_session_1.thumb.png 2A.data - DataFrame et Graphes - correction Opérations standards sur les dataframes (pandas et les matrices (numpy. Graphiques avec matplotlib.
_images/td2a_visualisation.thumb.png 2A.data - Matplotlib Tutoriel sur matplotlib.
_images/pandas_iterator.thumb.png 2A.data - Pandas et itérateurs 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 ?
_images/pandas_iterator_correction.thumb.png 2A.data - Pandas et itérateurs - correction 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 ?
_images/td2a_cenonce_session_5_donnees_non_structurees_et_programmation_fonctionnelle.thumb.png 2A.i - Données non structurées et programmation fonctionnelle Calculs de moyennes et autres statistiques sur une base twitter au format JSON avec de la programmation fonctionnelle (module cytoolz.
_images/td2a_correction_session_5_donnees_non_structurees_et_programmation_fonctionnelle_corrige.thumb.png 2A.i - Données non structurées, programmation fonctionnelle - correction Calculs de moyennes et autres statistiques sur une base twitter au format JSON avec de la programmation fonctionnelle (module cytoolz.
_images/td2a_cenonce_session_2D_jupyter.thumb.png 2A.i - Jupyter et calcul distribué 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.
_images/td2a_cenonce_session_5.thumb.png 2A.i - Modèle relationnel, analyse d’incidents dans le transport aérien Base de données relationnelles, logique SQL.
_images/td2a_correction_session_5.thumb.png 2A.i - Modèle relationnel, analyse d’incidents dans le transport aérien - correction Manipulation de données avec les dataframes, jointures. Correction inachevée…
_images/td2a_cenonce_session_2D_parallelisation_local.thumb.png 2A.i - Parallélisation locale (énoncé) Parallélisation avec joblib.
_images/td2a_progressbar.thumb.png 2A.i - ProgressBar et fusion de random forest - énoncé 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.
_images/td2a_bigdata_memory.thumb.png 2A.i - Stratégies et grandes matrices en mémoire Eléments de réflexion autour des jeux de données trop grands pour tenir en mémoire.
_images/td2a_cenonce_session_2E.thumb.png 2A.i - Sérialisation 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.
_images/td2a_correction_session_2E.thumb.png 2A.i - Sérialisation - correction Sérialisation d’objets, en particulier de dataframes. Mesures de vitesse.
_images/td2a_ml_text_features.thumb.png 2A.ml - Classification binaire avec features textuelles Ce notebook propose de voir comment incorporer des features pour voir l’amélioration des performances sur une classification binaire.
_images/td2a_ml_text_features_correction.thumb.png 2A.ml - Classification binaire avec features textuelles - correction Ce notebook propose de voir comment incorporer des features pour voir l’amélioration des performances sur une classification binaire.
_images/ml_crypted_data.thumb.png 2A.ml - Machine Learning et données cryptées 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.
_images/ml_crypted_data_correction.thumb.png 2A.ml - Machine Learning et données cryptées - correction 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.
_images/td2a_some_nlp.thumb.png 2A.ml - Texte et machine learning 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.
_images/td2a_correction_session_2C.thumb.png 2A.soft - IPython et commandes magiques - correction Aperçu des commandes magiques pour automatiser un peu plus les tâches courantes.
_images/td2a_cenonce_session_2C.thumb.png 2A.soft - Jupyter et commandes magiques 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 Python pour un Data Scientist / Economiste.

_images/knn_high_dimension.thumb.png 2A.algo - Plus proches voisins en grande dimension 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.
_images/knn_high_dimension_correction.thumb.png 2A.algo - Plus proches voisins en grande dimension - correction 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.
_images/td2a_correction_session_6A.thumb.png 2A.algo - Puzzles algorithmes (1) - correction 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é.
_images/td2a_correction_session_6B.thumb.png 2A.algo - Puzzles algorithmes (2) - correction 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.
_images/td2a_cenonce_session_6A.thumb.png 2A.algo - Puzzles algorithmiques (1) Puzzles algorithmiques tirés de Google Code Jam et autres sites équivalents, produits scalaires, problèmes de recouvrements, soudoyer les prisonniers, découpage stratifié.
_images/td2a_cenonce_session_6B.thumb.png 2A.algo - Puzzles algorithmiques (2) 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.
_images/gentry_integer_encryption.thumb.png Cryptage homomorphic de Craig Gentry 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).
_images/gentry_integer_encryption_correction.thumb.png Cryptage homomorphic de Craig Gentry - correction 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 - Deep Learning

Exercices pour deep learning pour le cours Python pour un Data Scientist / Economiste. Les notebooks qui vont de 100* à 300* sont des notebooks d’introduction avec pytorch qui fonctionne sous Linux. Il est préférable d’avoir du GPU (plus de cent fois plus rapide que du CPU).

_images/100_Logistic_IRIS.thumb.png 100 - Logistic Regression with IRIS and pytorch First steps with pytorch and Iris dataset.
_images/110_Perceptron_Iris.thumb.png 110 - First percepton with pytorch Implement the forward (prediction) and backward (training) algorithm with pytorch.
_images/200_Perceptron_MNIST.thumb.png 200 - First percepton with pytorch First perception on MNIST database.
_images/210_Convolution_MNIST.thumb.png 210 - First convolution network (CNN) with pytorch First convolution network on MNIST database.
_images/ml_deep_python.thumb.png 2A.dl - Deep learning avec Python Quelques librairies de deep learning sous Python.
_images/300_Convolution_CIFAR10.thumb.png 300 - Convolution network, gradient, tweaks, with pytorch Object detection on CIFAR10.

2A - Travaux dirigés - Economistes

Enoncés plutôt dédiés aux économistes pour le cours Python pour un Data Scientist / Economiste.

_images/TD2A_eco_les_API.thumb.png 2A.eco - API, API REST Petite revue d’API REST.
_images/TD2A_eco_debuter_flask.thumb.png 2A.eco - Débuter avec Flask 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é.
_images/TD2A_eco_API_SNCF.thumb.png 2A.eco - Exercice API SNCF Manipulation d’une API REST, celle de la SNCF est prise comme exemple. Exercices.
_images/TD2A_eco_API_SNCF_corrige.thumb.png 2A.eco - Exercice API SNCF corrigé Manipulation d’une API REST, celle de la SNCF est prise comme exemple. Correction d’exercices.
_images/td2a_eco_exercice_de_fin_de_seance.thumb.png 2A.eco - Exercice Python - Eco Séance 2 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.
_images/td2a_eco_exercices_de_manipulation_de_donnees.thumb.png 2A.eco - Mise en pratique des séances 1 et 2 - Utilisation de pandas et visualisation Trois exercices pour manipuler les donner, manipulation de texte, données vélib.
_images/td2a_eco_exercices_de_manipulation_de_donnees_correction_a.thumb.png 2A.eco - Mise en pratique des séances 1 et 2 - Utilisation de pandas et visualisation - correction Correction d’un exercice sur la manipulation des données.
_images/td2a_eco_exercices_de_manipulation_de_donnees_correction_b.thumb.png 2A.eco - Mise en pratique des séances 1 et 2 - Utilisation de pandas et visualisation - correction Correction de l’exercice 2 et manipulations classiques de texte.
_images/td2a_eco_exercices_de_manipulation_de_donnees_correction_c.thumb.png 2A.eco - Mise en pratique des séances 1 et 2 - Utilisation de pandas et visualisation - correction Correction de l’exercice 3 et disponibilités des velibs.
_images/td2a_eco_sql.thumb.png 2A.eco - Python et la logique SQL 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.
_images/td2a_eco_sql_correction.thumb.png 2A.eco - Python et la logique SQL - correction Correction d’exercices sur SQL.
_images/td2_eco_rappels_1a.thumb.png 2A.eco - Rappel de ce que vous savez déjà mais avez peut-être oublié 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.
_images/td2a_TD5_Traitement_automatique_des_langues_en_Python.thumb.png 2A.eco - Traitement automatique de la langue en Python Aperçu de ce qu’est le traitement automatique du langage naturel (NLP et quelques exercices.
_images/td2a_TD5_Traitement_automatique_des_langues_en_Python_correction.thumb.png 2A.eco - Traitement automatique de la langue en Python - correction Correction d’exercices liés au traitement automatique du langage naturel.
_images/TD2A_Eco_Web_Scraping.thumb.png 2A.eco - Web-Scraping 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.
_images/TD2A_Eco_Web_Scraping_corrige.thumb.png 2A.eco - Web-Scraping - correction Correction d’exercices sur le Web Scraping.
_images/td2a_eco_regressions_lineaires.thumb.png Régressions linéaires avec Statsmodels et Scikit-Learn 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 - Long Travaux dirigés - Economistes

Enoncés plutôt dédiés aux économistes pour le cours Python pour un Data Scientist / Economiste. Ces énoncés sont longs et couvrent plusieurs séances. Ils sont également moins testés.

_images/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres.thumb.png 2A.eco - A quoi ça sert ? 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.
_images/td2a_eco_5d_Travailler_du_texte_les_expressions_regulieres_correction.thumb.png 2A.eco - A quoi ça sert ? - correction Correction du TD portant le même titre.
_images/td2a_eco_API_pocket_et_Webscraping.thumb.png 2A.eco - Web Scrapping et API avec Pocket Le notebook revient sur le webscrapping et l’utilisation d’API avec pocket.
_images/td2A_eco_API_pocket_et_Webscraping_correction.thumb.png 2A.eco - Web Scrapping et API avec Pocket - correction Le notebook revient sur le webscrapping et l’utilisation d’API avec pocket.
_images/td2a_NLP_pocket.thumb.png NLP, Scrapping avec Pocket Le notebook passe en revue plusieurs outils tels que NLTK, les nuage de mots, expressions régulières.
_images/td2a_NLP_pocket_correction.thumb.png NLP, Scrapping avec Pocket - correction Le notebook passe en revue plusieurs outils tels que NLTK, les nuage de mots, expressions régulières (correction).
_images/td2a_Seance_7_Analyse_de_textes.thumb.png TD7 - Analyse de texte Analyse de texte, TF-IDF, LDA, moteur de recherche, expressions régulières.
_images/td2a_Seance_7_Analyse_de_textes_correction.thumb.png TD7 - Analyse de texte - correction 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 Python pour un Data Scientist / Economiste.

_images/td2a_cenonce_session_3B.thumb.png 2A.ml - Arbres de décision / Random Forest Classification, régression, visualisation avec des méthodes ensemblistes (arbres, forêts, …).
_images/td2a_correction_session_3B.thumb.png 2A.ml - Arbres de décision / Random Forest - correction Méthodes ensemblistes, features importance, correction.
_images/ml_cc_machine_learning_problems2.thumb.png 2A.ml - Boosting, random forest, gradient Avantages et inconvénients des méthodes à gradient. Exercice sur la rotation de features avant l’utilisation d’une random forest.
_images/td2a_clustering.thumb.png 2A.ml - Clustering 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.
_images/td2a_clustering_correction.thumb.png 2A.ml - Clustering - correction 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.
_images/ml_b_imbalanced.thumb.png 2A.ml - Imbalanced dataset 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.
_images/ml_ccc_machine_learning_interpretabilite.thumb.png 2A.ml - Interprétabilité 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.
_images/ml_d_libraries.thumb.png 2A.ml - Librairies de machine learning Revue non exhaustive de librairies de machine learning sous Python.
_images/ml_d_library_h2o.thumb.png 2A.ml - Machine Learning avec H2O et Python Exemple avec H20.
_images/td2a_cenonce_session_4A.thumb.png 2A.ml - Machine Learning et Marketting Prédire la souscription d’un contrat sur le jeu de données Bank Marketing Data Set .
_images/td2a_correction_session_4A.thumb.png 2A.ml - Machine Learning et Marketting - correction Classification binaire, correction.
_images/ml_c_machine_learning_problems.thumb.png 2A.ml - Problèmes de machine learning Revue des problèmes classiques de machines learning, classification, régression, ranking. Exercices sur la classification multi-classes.
_images/td2a_cenonce_session_3A.thumb.png 2A.ml - Statistiques descriptives avec scikit-learn ACP, CAH, régression lineaire.
_images/td2a_correction_session_3A.thumb.png 2A.ml - Statistiques descriptives avec scikit-learn - correction ACP, CAH, régression linéaire, correction.
_images/td2a_timeseries.thumb.png 2A.ml - Séries temporelles Prédictions sur des séries temporelles et autres opérations classiques.
_images/td2a_timeseries_correction.thumb.png 2A.ml - Séries temporelles - correction Prédictions sur des séries temporelles.
_images/ml_a_tree_overfitting.thumb.png 2A.ml - Tree, overfitting 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. Quelques illustrations.
_images/td2a_ethics.thumb.png Machine Learning éthique 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.
_images/td2a_ethics_correction.thumb.png Machine Learning éthique - correction 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.

3A - Travaux dirigés - Hadoop

Séances d’introduction aux clusters. Comment manipuler les données depuis ou vers un cluster, premiers job Map Reduce avec le langage PIG. Ces séances requiert un cluster.

_images/td3a_correction_session8a.thumb.png 3A.mr - Données antipathiques (skewed), Appariement (correction) Correction.
_images/td3a_cenonce_session8a.thumb.png 3A.mr - Données antipathiques (skewed), Appariement - énoncé Un problème où le map/reduce n’est pas la meilleure solution dans l’absolu. Comment faire quand on n’a que ça et un problème de détection de doublons dans un jeu de données ?
_images/td3a_correction_session6.thumb.png 3A.mr - Map/Reduce avec PIG - correction Correction.
_images/td3a_correction_session6b.thumb.png 3A.mr - Map/Reduce avec PIG sur Azure - correction  
_images/td3a_cenonce_session6b.thumb.png 3A.mr - Map/Reduce avec PIG sur Azure - énoncé Manipulation de fichiers sur un cluster Hadoop HDInsight, premieer job map/reduce avec PIG. Lire aussi From Pig to Spark: An Easy Journey to Spark for Apache Pig Developers.
_images/td3a_correction_session7az.thumb.png 3A.mr - PIG et JSON et streaming avec les données vélib (correction avec Azure) Correction.
_images/td3a_correction_session7a.thumb.png 3A.mr - PIG et JSON et streaming avec les données vélib (correction) Correction.
_images/td3a_cenonce_session7a.thumb.png 3A.mr - PIG et JSON et streaming avec les données vélib - énoncé Manipulation de données JSON en Map/Reduce avec PIG.
_images/td3a_correction_session7paramsaz.thumb.png 3A.mr - PIG et Paramètres (Azure) (correction) Correction.
_images/td3a_cenonce_session7paramsaz.thumb.png 3A.mr - PIG et Paramètres (Azure) - énoncé Manipulation de données JSON en Map/Reduce avec PIG sur HDInsight.
_images/td3a_correction_session7params.thumb.png 3A.mr - PIG et Paramètres (Cloudera) (correction) Correction.
_images/td3a_cenonce_session7params.thumb.png 3A.mr - PIG et Paramètres (Cloudera) - énoncé Utilisation de job paramétrables en Map/Reduce avec PIG sur Cloudera.
_images/td3a_cenonce_reservoir_sampling.thumb.png 3A.mr - Reservoir Sampling distribué - énoncé Reservoir Sampling sur Map/Reduce. Cet algorithme est un algorithme d’échantillonnage en streaming.
_images/td3a_correction_reservoir_sampling.thumb.png 3A.mr - Reservoir Sampling distribué - énoncé - correction Correction.
_images/td3a_cenonce_session6.thumb.png 3A.mr - Séance 6 : Map/Reduce avec PIG - énoncé Manipulation de fichiers sur un cluster Hadoop Cloudera, premieer job map/reduce avec PIG. Lire aussi From Pig to Spark: An Easy Journey to Spark for Apache Pig Developers.
_images/map_reduce_timeseries.thumb.png 3A.mr - Séries temporelles et map reduce Map/Reduce est un concept qui permet de distribuer les données facilement si elles sont indépendantes. C’est une condition qu’une série temporelle ne vérifie pas du fait de la dépendance temporelle. Voyons ce que cela change.

3A - Travaux dirigés - Spark

Séances Map/Reduce avec Spark. Elles ne requièrent pas de clusters.

_images/spark_matrix_3_columns.thumb.png 3A.mrs - Matrice en 3 colonnes Représentation d’une matrice avec Spark / Map / Reduce.
_images/spark_first_steps.thumb.png 3A.mrs - Premiers pas avec Spark Spark et RDD.
_images/spark_mllib.thumb.png 3A.mrs - Spark et MLlib Régression logisitique avec Spark.