HackMD
  • New!
    New!  “Bookmark” and save your note
    Find a note that's worth keeping or want reading it later? “Bookmark” it to your personal reading list.
    Got it
      • Create new note
      • Create a note from template
    • New!  “Bookmark” and save your note
      New!  “Bookmark” and save your note
      Find a note that's worth keeping or want reading it later? “Bookmark” it to your personal reading list.
      Got it
      • Options
      • Versions and GitHub Sync
      • Transfer ownership
      • Delete this note
      • Template
      • Save as template
      • Insert from template
      • Export
      • Dropbox
      • Google Drive
      • Gist
      • Import
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
      • Download
      • Markdown
      • HTML
      • Raw HTML
      • ODF (Beta)
      • Sharing Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • More (Comment, Invitee)
      • Publishing
        Everyone on the web can find and read all notes of this public team.
        After the note is published, everyone on the web can find and read this note.
        See all published notes on profile page.
      • Commenting Enable
        Disabled Forbidden Owners Signed-in users Everyone
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Invitee
      • No invitee
    Menu Sharing Create Help
    Create Create new note Create a note from template
    Menu
    Options
    Versions and GitHub Sync Transfer ownership Delete this note
    Export
    Dropbox Google Drive Gist
    Import
    Dropbox Google Drive Gist Clipboard
    Download
    Markdown HTML Raw HTML ODF (Beta)
    Back
    Sharing
    Sharing Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Note Permission
    Read
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    Write
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    More (Comment, Invitee)
    Publishing
    Everyone on the web can find and read all notes of this public team.
    After the note is published, everyone on the web can find and read this note.
    See all published notes on profile page.
    More (Comment, Invitee)
    Commenting Enable
    Disabled Forbidden Owners Signed-in users Everyone
    Permission
    Owners
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Invitee
    No invitee
       owned this note    owned this note    
    Published Linked with
    Like BookmarkBookmarked
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    --- tags: Enseignement, MPI, Info 114, Introduction à la Science des données --- # Info 114: Introduction à la Science des Données ## Enseignants Cours: Isabelle Guyon <guyon@clopinet.com> TP: Nicolas M. Thiéry <Nicolas.Thiery@u-psud.fr> ## [Notes de cours](https://www.dropbox.com/sh/qun4oyd12sn5utr/AABXp2ok6YtiOVAl_4UoC_N0a) - [Introduction](https://www.dropbox.com/sh/qun4oyd12sn5utr/AABXp2ok6YtiOVAl_4UoC_N0a?preview=Introduction.pptx) - [Chapter 1: How to become a Data Scientist in ONE hour :-)](https://www.dropbox.com/sh/qun4oyd12sn5utr/AABXp2ok6YtiOVAl_4UoC_N0a?preview=Chapter1.pptx) - [Chapter 2: Exploratory analysis](https://www.dropbox.com/sh/qun4oyd12sn5utr/AABXp2ok6YtiOVAl_4UoC_N0a?preview=Chapter2.pptx) - [Chapter 3: First POM explorations and project selection](https://www.dropbox.com/s/1l95tlgvxjk2mxr/Chapter3.pptx) - [Chapter 4: POM tricks of the trade](https://www.dropbox.com/s/ui3u14fv32qjas9/Chapter4.pptx?dl=0) - [Chapter 5: Neural networks and deep learning](https://www.dropbox.com/s/if6g2padjs3b6nw/Chapter5.pptx?dl=0) - [Chapter 6: From LMS to back-prop](https://www.dropbox.com/s/m5mftr97sktddzb/Chapter6.pptx?dl=0) - [Chapter 7: Big data versus Good data](https://www.dropbox.com/s/3n480qa7doaxmfr/Chapter7.pptx?dl=0) ## Références Hands-On Machine Learning with Scikit-Learn and TensorFlow, O'Reilly (Aurélien Géron); nouvelle édition 11 octobre ## Glossaire | Anglais | Français | Presque synonymes | | ------- | -------- | -------------- | | feature | variable | caractéristique, colonne, attribut | | sample | exemple | ligne, échantillon, pattern | | table | tableau | matrice | | target | objectif | label, vérité terrain, ground truth, output,... | ## Instructions pour le TP 1 (HW1) Comme en Info 111, nous utiliserons l'environnement interactif Jupyter, mais cette fois avec le langage de programmation Python. ### 1. Ouvrez un terminal `Applications -> Terminal` ### 2. Récupérez les sujets et travaillez sur les fiches Jupyter dans `Info114/HW1` 1. Préparez votre dossier avec les commandes suivantes: mkdir ~/Info114 cd ~/Info114 2. Récupérez le sujet de TP: info-114 fetch HW1 Si jamais il y a une erreur `command info-114 not found`, utiliser à la place (ici et plus loin): /public/info-114/bin/info-114 3. Ouvrez Jupyter info-114 jupyter notebook Note: en salle de TP, vous pouvez comme la semaine dernière récupérer les sujets depuis Jupyter avec: Assignment -> cours Info114 -> fetch sur HW1 ### Errata pour la version originale 00-tableau.ipynb: - T[1,2]: c'est pour la deuxieme ligne et troisieme colonne - C'est de T3D qu'il faut extraire les trois premieres colones 01-images.ipynb: - Pour extraire le canal des rouges, faire R = M[:,:,0] * 1. Pour que les valeurs soient stockées en nombre flottants. Sinon elles sont stockées sur es entiers courts (entre 0 et 255), et les calculs arithmétiques vont déborder. Par exemple, on aurait: $255+1 = 0$ . Vous ne pouvez pas modifier l'exemple donné, mais vous pouvez insérer une nouvelle cellule (Insérer -> Cellule -> après) - avant G+R, le texte devrait être: «Il est maintenant facile de faire de l'arithmétique sur tous les pixels. Par exemple la somme des intensités en vert et rouge s'écrit:» ## Instructions pour le TP 2 (HW2) 1. Ouvrez les notes du cours (voir ci-dessus) 2. Récupérez le sujet comme pour le TP 1 (remplacer `HW1` par `HW2`) 3. Ouvrez la feuille de travail `data_analysis` et suivez les instructions qui s'y trouvent. ### Errata pour le TP 2 Les liens vers les feuilles foreground-extractiono et feature-extraction sont cassés (`_` au lieu de `-`); ouvrir les feuilles depuis le navigateur de fichier. couleurs de fond, ... ## Instructions pour le TP 3 (HW3) 1. Ouvrez les notes du cours (voir ci-dessus) 2. Récupérez le sujet comme pour le TP 1 (remplacer `HW1` par `HW3`) 3. Ouvrez la feuille de travail `data_analysis` puis `project_selection` et suivez les instructions qui s'y trouvent. ## Errata pour le TP 3 - Hint: utiliser `ls` plutôt que `glob.glob`. Ou alors importer `glob.glob` - `RL_data.csv` -> `RE_data.csv` - Hint to load csv with panda: use `pd.read_csv` - On ne veut pas travailler sur le fichier des métadatas, mais il est lui aussi en `.csv`. Il faut donc importer seulement les fichiers se terminant par `_data.csv` - 2.3 systematic_data_experiment(data_name, all_scaled_data_df, sklearn_model, sklearn_metric) à remplacer par systematic_data_experiment(data_name, all_data_df, sklearn_model, sklearn_metric) - 2.3-4 assigner le résultat de systematic_data_experiment à result_noscaling et result_scaling - 2.6 utiliser .plot.bar() plutôt que .hist pour créer un histogamme. Notes pour l'année prochaine: - enlever les raccourcis np, pd, ls, importer les vrais modules - donner un exemple de read_csv ## Projet Téléchargez le dossier commun pour le projet: cd ~/Info114 curl -s http://Nicolas.Thiery.name/Project.tgz -o - | tar zxvf - Pour chaque sujet de projet il y a un sous répertoire (par exemple `Project/2.segmentation`, avec du code et éventuellement un jeu de donnée spécifique. En sus, il y a du code commun dans `Project/utilities`. ### Jeu de données Le jeu de données principal du projet est trop gros pour que chacun d'entre vous en fasse une copie. Au lieu de cela, il est installé une fois pour toute sur le système, comme les logiciels du cours (il est en cours d'installation sur JupyterHub). Pour y accéder depuis Python, vous utiliserez la commande suivante qui vous indiquera dans quel dossier le jeu de donnée est installé: import os.path data_dir = os.path.join(os.path.split(os.path.split(sys.executable)[0])[0], 'share', 'info-114-data', 'Project') En salle de TP, `data_dir` vaudra: /public/info-114/miniconda3/envs/info-114/share/info-114-data/Project/ Ensuite vous pourrez, par exemple, remplacer: meta_data_dir = '../mini-dataset/meta-data' par: meta_data_dir = os.path.join(data_dir,'/meta-data') Si vous souhaitez vraiment télécharger le jeu de données (par exemple pour travailler sur colab), vous pouvez faire: git clone https://gitlab.u-psud.fr/Info114/Data.git ### Espaces collaboratifs - [Projet dataset](/P2eRdPTfSeSXfGEX9fsuIw) - [Projet segmentation](/Y8S49ShPQmGckI_t_zmcxA) - [Projet classifieurs](/J5cOBtokRvmINMg4DbCg9A) - [Projet représentation](/Q4xlxt_6QbSJDMkmFCdyYg) - [Projet biais](/6GewVo7vTX2h1LLGSplZrg) - [Projet apprentissage profond](/LR3YEo9SS9WsOBNIvOMiiQ) ## Deuxième session ### Questions de cours Se préparer À L'AVANCE pour des questions de cours qui viennent des QUIZ 1 et 2: 1. Moyenne : Quelle est la moyenne de [1, 2, 3, 4, 5, 6, 7, 8, 9] 2. Médiane : Quelle est la médiane de [1, 2, 3, 4, 5, 6, 7, 8, 9] 3. Variance : Mettez un cercle autour de l’échantillon a la plus grande variance : [1, 3, 5, 7, 9] [1,2,3,4,5] 4. Écart type : Quelle est l’écart type de [-1, 1, -1, 1, -1, 1, -1, 1] 5. Corrélation : On appelle « standardisation » d’un échantillon l’opération qui consiste à soustraire la moyenne puis diviser par l’écart type. Quelle est la formule de la corrélation pour deux échantillons x = [x_1, x_2, x_3, … x_n] et y = [y_1, y_2, y_3, …, y_n] standardisés ? 6. Exemple. Un tableau de données a habituellement les exemples en ligne et les variables en colonnes. Quels sont les synonymes d’ « exemple » : sample (English) ligne (Français) line (English) échantillon (Français) individu (Français) pattern (English) forme (Français) patient (médical) image (computer vision) client (marketing) sujet (Français) subject (English) 7. Variables. Quels sont les synonymes de « variables » : feature (English) caractéristique (Français) colonne (Français) column (English) attribute (English) attribut (Français) pixel (computer vision) 8. Tableau. Quels sont les quasi-synonymes de « tableau » : table (English) matrice (Français) matrix (English) array (English) 9. Vecteur. Quels sont les quasi-synonymes de « vecteur » : vector (English) list (English) liste (Français) collection (Français) 10. Vérité terrain. Quels sont les synonymes de « vérité terrain » : target (English) valeur cible (Français) ground truth (English) truth value (English) label (French/English) output (English) valeur désirée (Français) 11. Barres d’erreurs : On définit l’ « error rate » (taux d’erreurs) comme la la fraction d’erreurs des exemples de test. Quelle variabilité une barre d’erreurs de l’error rate pourrait-elle mesurer ? celle de l’ensemble d’apprentissage celle de l’ensemble de test celle de l’initialisation des algorithmes qui ont des facteurs aléatoires celle d’autres facteurs aléatoires des algorithmes 12. Méthode de base : Nommez une méthode de classification de base 13. Types d’erreur : Quel est le pire type d’erreur, les erreurs de Type I (faux positifs) ou les erreurs de Type II (faux négatifs) ? - Ça n’a pas d’importance - Type I - Type II - Ça dépend de l’application 14. Corrélation. Le concept le plus important en science des données est celui de co-variance/corrélation/dépendance entre variables qui permet de quantifier si une variable peut être prédite à partir d'une autre. En utilisant le cours https://www.dropbox.com/s/1l95tlgvxjk2mxr/Chapter3.pptx et la page Wikipedia, répondre VRAI ou FAUX? - Corrélation n'implique pas causalité - Le coefficient de corrélation de Pearson est une mesure de dépendance linéaire - Il existe d'autres coefficients de corrélation que celui de Pearson - corr(X, Y) = corr(Y, X) - Si X et Y sont indépendantes alors corr(X, Y) = 0 - Si corr(X, Y) = 0 alors X et Y sont indépendantes - Si on standardise X et Y (soustrait la moyenne et divise par l'écart type) on ne change pas corr(X, Y) - Le coefficient de correlation dépend de l'échelle (ou de l'unité) des variables - corr(X, -X) = -1 - La matrice de corrélation est anti-symétrique - Dans un scatter-plot ou tous les points sont alignés, plus la pente est élevée, plus la corrélation est grande - Dans un scatter plot ou les points sont dispersés, la corrélation est plus grande si les points sont presque alignés - Dans un scatter plot ou les points sont sur un cercle les variables sont dépendante mais la corrélation est nulle - La corrélation est la covariance de deux variables standardisées - La variance des variables influe sur leur corrélation - corr(X, X) = 1 - corr(aX+b, cY+d) = corr(X, Y) pour tous nombres a, b, c, d - Si on standardise X et Y, corr(X, Y) est proportionel au produit scalaire de X et Y - Pour des vecteurs centrés, corr(X, Y) est le cosinus de l'angle entre X et Y - Pour prédire une variable Y il est aussi utile d'utiliser une variable corrélée qu'une variable anti-corrélée ### Diapos Nous envoyer A L'AVANCE (avant le 30 juin à 23h59) 10 diapos présentant le projet effectué, selon le [schema général fourni en classe](https://docs.google.com/presentation/d/1G0oqnbelonvi5WB6BU_lKxP7TcGncd4LPZxN4qGBXwA/edit#slide=id.g656157fc01_2_135) par email à Nicolas.Thiery@u-psud.fr ET iguyon@lri.fr LES ÉTUDIANTs N’AYANT PAS FOURNI LEURS DIAPOS A L’AVANCE AURONT ZERO EN DEUXIEME SESSION. Les binomes doivent chacun et INDIVIDUELLEMENT préparer une présentation. Cas particulier étudiant arrivé en cours de semestre: Préparer une présentation de 10 diapos expliquant les méthodes suivantes illustrées sur la page: https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html#sphx-glr-auto-examples-classification-plot-classifier-comparison-py <https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html#sphx-glr-auto-examples-classification-plot-classifier-comparison-py> Titre (1 slide, indiquer son nom) Introduction (1 slide): contexte, qu’est-ce qu’un problème de classification; exemples de la vie réélle Data (1 slide): Description des données montrée sur la page web citée ci-dessus; ce sont des exemples jouets en 2 dimensions; pourquoi ces exemples sont-ils interessants? Que représentent les figures (hint: voir scatter plots) Nearest neighbors (2 slides) Decision tree (2 slides) Neural net (2 slides) Pour chacun des 3 algorithmes ci-dessus: - description de l’algorithme; - dans quelle situation est-ce un bon algorithme à utiliser: avantages, inconvénients; cas des grands et petit nombres d’exemples et des grands et petit nombres de variables - expliquer la forme des surfaces de decision - comment controller l’over-fitting (si nécessaire) Conclusion (1 slide): qu’avez-vous appris? ### Le jour de l’examen: - presentation orale 10 min + 5 min questions - deux questions de cours (parmi celles à préparer) : 5 min. ### Barème /20: - clareté de l’exposé, logique de l’enchaînement des idées, et respects des consignes : 5 points - compréhension des méthodes employées, qualités techniques, résultats décrits : 5 points - charisme, qualité esthétique de la présentation (y compris des illlustrations) : 5 points - questions de cours : 5 points ## Serveur JupyterHub Comme pour Info 111, vous pourrez travailler sur vos fiches de TP et projet à distance en utilisant le serveur JupyterHub de Paris Sud. Voir les [instructions pour Info 111](http://nicolas.thiery.name/Enseignement/Info111/logiciels/jupyter.html#jupyterhub), en ajustant 111 par 114. ## Installer les logiciels sur votre propre machine (pour les expérimentés) Suivre les [instructions similaires pour le cours Info111](http://nicolas.thiery.name/Enseignement/Info111/logiciels/jupyter-installation), en utilisant le dépot git suivant à la place d'`Info111-notebooks`: https://gitlab.u-psud.fr/Info114/sujets ## De C++ à Python Vous trouverez ci-dessous quelques notes à propos du langage de programmation Python - pas besoin de déclarer les variables - pas de `;` entre les instructions - les instructions sont séparées par des sauts de ligne - les blocs sont déterminés par l'indentation (et non les {}) Affectations: x = 42 s = "Bonjour!" f = 3.14159 Un `if` en C++: if ( x < 10 ) { ...; ...; } else { ...; } Le même `if` en Python: if x < 10: ... ... else: ... Une boucle for en C++: for (int i = 0; i < 10 ; i++) { cout << i << endl; } La même boucle `for` en Python: for i in range(0, 10): print(i) Les *compréhensions* en Python: comment construire des listes avec une syntaxe proche des mathématiques. Essayez les commandes suivantes: range(5, 10) range(5, 95, 10) [ 2*i for i in range(0, 10) ] [ i**2 for i in range(0, 10) ] ## Utiliser une compréhension pour fabriquer une image; essayer les commandes suivantes: | Coluhgvmn 1 | Column 2 | Column 3 | | -------- | -------- | -------- | | Text | Text | Text | def cercle(x,y,r): return Point([x,y]).buffer(r).boundary cercle(0,0,1) cascaded_union([cercle(0,0,1), cercle(0,0,2), cercle(0,0,3)]) cascaded_union( [ cercle(0,0,r) for r in range(10) ]) ## Fonctions mathématiques usuelles from math import sin, cos sin(3.14) ## Définir une fonction En C++: int f(int x, int y, int r) { return x + y - r } En Python: def f(x, y, r): return x + y - r

    Import from clipboard

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lost their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template is not available.
    All
    • All
    • Team
    No template found.

    Create a template

    Delete template

    Do you really want to delete this template?

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in via Google

    New to HackMD? Sign up

    Help

    Documents

    Tutorials
    YAML Metadata
    Slide Example
    Book Example

    Contacts

    Talk to us
    Report an issue
    Send us email

    Cheatsheet

    Example Syntax
    Header # Header
    • Unordered List
    - Unordered List
    1. Ordered List
    1. Ordered List
    • Todo List
    - [ ] Todo List
    Blockquote
    > Blockquote
    Bold font **Bold font**
    Italics font *Italics font*
    Strikethrough ~~Strikethrough~~
    19th 19^th^
    H2O H~2~O
    Inserted text ++Inserted text++
    Marked text ==Marked text==
    Link [link text](https:// "title")
    Image ![image alt](https:// "title")
    Code `Code`
    var i = 0;
    ```javascript
    var i = 0;
    ```
    :smile: :smile:
    Externals {%youtube youtube_id %}
    LaTeX $L^aT_eX$

    This is a alert area.

    :::info
    This is a alert area.
    :::

    Versions

    Versions and GitHub Sync

    Sign in to link this note to GitHub Learn more
    This note is not linked with GitHub Learn more
     
    Add badge Pull Push GitHub Link Settings

    Version named by    

    More Less
    • Edit
    • Delete

    Note content is identical to the latest version.
    Compare with
      Choose a version
      No search result
      Version not found

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub

        Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more

         Sign in to GitHub

        HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully