Topic outline

  • General


  • Le cours de sciences de données a comme objectif de vous familiariser avec quelques outils et concepts nécessaires pour analyser un ensemble de données et proposer des hypothèses et modèles à partir de ces données.

    Pour s'y faire nous allons utiliser quelques outils que vous pourriez trouver dans vos entreprises :

    • git et github desktop : Ces outils vous permettront de garder un historique du code et de le partager avec vos collègues et les formateurs.
    • Jupyter : Le langage utilisé dans le cours est Python. Toutes les activités seront déroulées dans des Notebooks Jupyter. 
    • des bibliothèques python : nous allons utiliser plusieurs bibliothèques Python pour l’analyse, la visualisation et la modélisation des données.


    Sur Caseine vous trouverez, en français, toutes les consignes à suivre et les compétences liées à chaque activité. Le code à produire sera hébergé en forme de Notebook Jupyter sur votre compte github.

    Dans cette section nous allons configurer notre environnement de travail, créer notre espace de code avec git, et publier notre code pour le partager avec les formateurs.

    Activité 1 : Utilisation de Git et Github Desktop

    Présentiel - 4h
    Vous allez commencer par installer git dans votre ordinateur et pratiquer les commandes les plus importants pour son utilisation.

    Avant de continuer
    Dans le développement logiciel il est indispensable de versionner ou historiser son code à fin de connaître ses évolutions et détecter les  possibles sources d'erreur.  Il est aussi nécessaire de partager son code pour faciliter le travail en équipe.

    Git est un outil qui permet, entre autre, d’effectuer ces tâches. Nous allons utiliser git tout au long du cours, il est donc important de connaître ses fonctionnalités de base.


    1. Installez Git sur votre machine

    • Si l'avez pas fait encore, créez un compte GitHub et vérifiez avec votre formateur que votre profil est bien rattaché à l'organisation Campus Numérique in the Alps.
    • Installez GitHub Desktop dans votre ordinateur, ouvrez-le et connectez-vous avec le compte github que vous venez de créer.
    • Prenez votre temps pour explorer l'outil.

    2. Créez votre premier repository git

    En git, un repository ou dépôt est un répertoire qui contient le code que nous voulons historiser.  Voyons comment nous pouvons créer un nouveau dépôt.

    • Dans GitHub Desktop, cliquez sur le bouton create new repository on your Hard Drive.
    • Dans le nom du dépôt mettez my-first-repository (le nom du dépôt ne doit pas contenir des accents, ni espaces, ni caractères spéciaux).
    • Dans description mettez This is my first git repository.
    • Sélectionnez le chemin local, dans votre disque dur, pour votre dépôt. Github Desktop va créer un répertoire avec le nom de votre dépôt dans le chemin sélectionné.
    • Activez l'option Initialize this repository with a README puis cliquez sur create repository.
    • Dans votre ordinateur, naviguez dans le répertoire que vous avez choisi pour votre dépôt et rentrez dans le répertoire my-first-repository. Vous devez trouvez un fichier README.md qui contient la description de votre dépôt.

    3. Publiez votre dépôt

    Maintenant nous allons partager le dépôt que nous venons de créer sur notre machine. Pour ça il faut le publier dans le serveur de GitHub

    • Dans GitHub Desktop, cliquez sur publish repository.
    • Laissez les options par défaut et cliquez sur publish repository.
    • Allez sur votre compte GitHub sur internet et vérifiez si votre dépôt a bien été publié.

    4. Modifiez votre dépôt et publiez les modifications

    • Ouvrez le fichier README.md dans un éditeur. Ajoutez à la fin du fichier une ligne de texte contenant votre Prénom et Nom.
    • Retournez sur GitHub Desktop et sélectionnez l'onglet changes, vous allez voir la ligne que vous venez de rajouter dans le fichier.
    • Pour "historiser" votre changement, en bas à gauche de la fenêtre, vous pouvez écrire un message, par exemple : Add my name to README file. En description vous pouvez donner plus d'information, par exemple : This is my first commit. Puis cliquez sur commit to master.
    • Maintenant vous pouvez publier les modifications : cliquez sur le bouton push origin qui se trouve au centre de la fenêtre de GitHub Desktop.
    • Pour finir, vérifiez que vos modifications sont publiées en allant sur la page de GitHub. 
     

    5. Récupérez le dépôt de travail

    Vous allez maintenant copier dans votre compte GitHub les énoncés sur lesquels nous allons travailler toute au long du cours. Il s’agit de Notebooks Jupyter que vous allez compléter.

    • Allez sur le dépôt du cours : https://github.com/le-campus-numerique/cours_SDD
    • Cliquez sur fork, et sélectionnez votre profile. L'action fork crée un copie du dépôt dans votre compte GitHub.
    • Revenez sur GitHub Desktop et cliquez sur file et puis clone repository.
    • Dans la liste de dépôts de GitHub sélectionnez le dépôt que vous venez de créer : cours_SDD sur votre profile.
    • Dans local path sélectionnez le chemin que vous désirez dans votre machine et cliquez sur clone. Vous avez copié dans votre machine le travail à compléter tout au long du cours.

    Activité 2 :  Introduction à Jupyter et publication d'un Notebook sur Git

    Présentiel - 4h

    1. Installez l’environnement de développement


    2. Complétez le Notebook iteration1/notebook0_hello_world.ipynb

    • Complétez la première partie du notebook : Hello World, mettez votre nom et prénom et exécutez
    • Publiez les modifications sur GitHub
    • Complétez la partie 2 du notebook : créez la fonction sum pour calculer la somme de 500 et 300
    • Publiez les modifications sur GitHub : cliquez sur push origin
    Une fois vous avez publié les modifications, vous pouvez valider la compétence : Installer et configurer votre environnement de travail et la compétence : Historiser votre code avec git et le publier

    File: 1

  • La bibliothèque NumPy (http://www.numpy.org/) permet d’effectuer des calculs numériques avec Python. Elle permet de manipuler des matrices et vecteurs. Dans cette section nous allons apprendre les fonctions de base de cette bibliothèque.

    Resources :

    Activité 1 : Introduction à Numpy

    Présentiel - 4h
    Nous allons apprendre à créer des matrices et des vecteurs

    • Ouvrez le Notebook iteration1/notebook1_numpy_basics1 : Introduction to Numpy
    • Complétez le Notebook en utilisant des fonctions Numpy, lissez attentivement la documentation de numpy
    • Publiez les modifications que vous avez faites dans votre dépot GitHub
    Une fois que vous avez complété ce notebook vous pouvez valider la  compétence créer et manipuler des vecteurs et matrices en utilisant les fonctions basiques de numpy.


    Activité 2 : Algèbre linéaire avec Numpy

    Présentiel - 4h
    Nous allons faire des opérations sur des matrices grâce aux fonctions de Numpy

    Ressources :
    Un peu de lecture sur le calcul matriciel http://maths.cnam.fr/IMG/pdf/Alg.1_calcul_matriciel.pdf lisez jusqu'à la page 4.

    Instructions :
    • Révisez  quelques bases sur les matrices en répondant le Quiz : Les bases du calcul matriciel
    • Ouvrez le notebook iteration1/notebook2_numpy_linear_algebra : Linear Algebra with Numpy
    • Complétez le Notebook, répondez bien aux questions du Notebook.
    • Publiez les modifications sur votre repository en GitHub.
    Une fois vous avez complété le quiz et le notebook2 vous pouvez valider la compétence faire des opérations avec des vecteurs et matrices en numpy
    Quiz: 1
  • Dans cette section nous allons utiliser la bibliothèque matplotlib pour dessiner des courbes et des figures. Plus tard dans ce cous nous allons utiliser d'autres modules qui permettent de tracer des courbes, ces modules son basés sur  matplotlib.

    Ressources :


    Activité 1 : Introduction à Matplolib

    Distanciel - 4h
    Nous allons faire des courbes basiques avec matplotlib

    • Ouvrez le notebook iteration1/notebook3_matplotlib.ipynb
    • Completez le notebook
    • Publiez les modifications sur votre repository GitHub 

    Une fois que vous avez complété le Notebook3 vous pouvez valider  la compétence : générer des courbes simples avec matplotlib.

    Activité 2 : Matplotlib et Numpy

    Distanciel - 4h
    Nous allons maintenant résoudre un problème de calcul numérique avec numpy. Nous allons visualiser le résultat avec matplolib.

    • Ouvrez le notebook iteration1/notebook4_numpy_exercise.ipynb
    • Complétez le notebook
    • Publiez les modifications sur votre repository GitHub

    Une fois que vous avez complété le Notebook4 vous pouvez valider la competence réaliser des calculs numériques en utilisant numpy.
  • La bibliothèque Pandas permet de manipuler de grands volumes de donnée et de les analyser simplement. Pandas est l'un des outils les plus utilisés dans la science de données, n'hésitez pas à passer du temps dans la documentation.

    Ressources :

    Vous pouvez à tout moment vous diriger vers la documentation de Pandas, prenez votre temps pour comprendre la documentation et vous l'approprier.


    Activité 1 : Structures des données en Pandas

    Distanciel - 8h
    Nous allons étudier les structures des données principales en Pandas : Les Series et les DataFrame

    • Ouvrez le notebook iteration2/notebook5_introduction_pandas
    • Complétez le notebook
    • Publiez le notebook sur votre repository GitHub
    • Complétez le test Les structures des données en Pandas

    Une fois que vous avez complété le test Les structures des données en Pandas et le Notebook5 vous pouvez valider  la compétence connaître les structures des données utilisées en Pandas.

    Activité 2 : Des fonctions avancées sur Pandas

    Distanciel - 8h
    Allons plus loin dans la manipulations des données en utilisant les fonctions d'agrégation des données et de groupement.

    • Ouvrez le notebook iteration2/notebook6_pandas_advanced.ipynb
    • Complétez le notebook
    • Publiez le notebook sur votre repository GitHub
    Une fois que vous avez complété le notebook6 vous pouvez valider la compétence utiliser les fonctions agg, apply et groupby de Pandas.

    Activité 3 : Lecture/Écriture des fichiers en Pandas

    Distanciel - 8h
    Nous allons importer/exporter des fichiers des données avec Pandas. Nous allons explorer les fonctions de Pandas pour connaître et manipuler les données.
    Pour cette activité nous allons utiliser le set des données qui se trouve dans la repository : data/fifa.csv. Le fichiers contient des données des joueurs de football. 

    • Ouvrez le notebook iteration2/notebook7_pandas_io_files.ipynb
    • Complétez le notebook
    • Rajoutez le fichier data/fifa_out.csv que vous avez généré avec votre notebook dans votre repository git
    • Publiez les modifications sur votre repository GitHub

    Une fois que vous avez complété le notebook7 vous pouvez valider les compétences lire et écrire des fichiers en Pandas et savoir manipuler des Series et DataFrame en Pandas.
    Quiz: 1
  • La bibliothèque Seaborn est une surcouche de Matplotlib qui permet de visualiser des données d'un point de vue statistique. Nous retrouvons donc beaucoup de paramètres similaires à Matplotlib en Seaborn.

    Avant de rentrer dans l'analyse statistique des données, nous allons commencer par bien maîtriser la visualisation des données. Quand vous devez représenter des données, pour compléter un rapport ou présenter vos résultats, il est important de maîtriser ce que vous voulez visualiser : le polices, le texte, les couleurs, l'emplacement de vos graphes, ...  L'objectif de cette section est de pouvoir produire les graphiques que nous désirons en utilisant les outils de Seaborn et Matplotlib.

    Activité 1: Manipulation de graphes et plots

    Distanciel - 8h

    • Ouvrez le notebook iteration2/notebook8_seaborn_graphs.ipynb
    • Complétez le notebook et publiez les modifications sur votre repository GitHub
    Une fois que vous avez complété le notebook8 vous pouvez valider la compétence manipuler un graphe a l'aide de seaborn et matplotlib
  • La statistique descriptive permet d'expliquer certains phénomènes à partir d'un grand volume de donnée. Nous allons nous servir de certains indicateurs statistiques pour analyser nos données.

    Seaborn nous permet de visualiser des données statistiques afin d'analyser nos données.

    Ressources :
    Un peu de stats : cours sd (pdf). Ce document contient tous les concepts de base de la statistique descriptive, si vous avez un moment lisez-le. Il permet de clarifier quelques concepts.

    Activité 1 : Un peu de statistique

    Distanciel -12h
    Nous allons commencer par revoir quelques concepts statistiques. Ces concepts vont nous permettre d'interpréter les résultats présentés par Seaborn.

    Vous pouvez valider la compétence générer et interpréter des histogrammes, barplots et scatterplots en seaborn une fois que vous avez fini la première partie du notebook 9.
    Après avoir complété le test Concepts statistiques vous pouvez valider la compétence connaître les concepts élémentaires des statistiques

    Activité 2 : La distribution gaussienne

    Présentiel  - 4h
    La distribution gaussienne est très utilisée en statistique. Nous allons donc approfondir un peu sur ses propriétés. 

    Vous pouvez valider la compétence comprendre la définition de courbe de densité  et connaître la distribution normale.

    Activité 3 : Corrélation et relation entre plusieurs variables

    Présentiel - 8h
    Nous allons explorer des fonctionnalités de Seaborn qui nous permettent de déterminer la relation entre les différentes variables.

    • Suivez les videos :,
    • Complétez la partie 2 du notebook iteration3/notebook9_seaborn_pandas_visualize.ipynb
    • Publiez les modifications sur votre repository GitHub.
    Vous pouvez valider la compétence  visualiser des régressions linéaires et des corrélations en Seaborn.
    Quizzes: 2 File: 1
  • Dans cette section nous allons analyser les données météo de la ville de Madrid.

    Activité 1 : Nettoyer ses données

    Présentiel - 4h

    • Un Data scientist peut passer plus de la moitié de son temps a nettoyer ses données ; c'est une procédure indispensable car les résultats des analyses et modélisation dépendent de ces données. Nettoyer veut dire enlever les anomalies, remplir ou sortir les données manquantes, choisir l'information qui nous intéresse. Regardez cette vidéo pour apprendre comment nettoyer des données en utilisant Pandas :
    • Regarder et répétez chez vous cet exercice de nettoyage de donnée, ça vous permettra de maîtriser la procédure à suivre : https://www.dataoptimal.com/data-cleaning-with-python-2018/

    Activité 2 : Explorons nos données

    Présentiel - 4h
    Dans cette partie nous allons récupérer notre jeux des données, analyser les variables que nous avons à notre disposition et choisir les variables qui nous intéressent.

    • Ouvrez le notebook iteration3/notebook10_data_preprocessing.ipynb
    • Completez la Partie0 du notebook
    • Publiez vos modifications sur votre repository GitHub

    Activité 3 : Nettoyons nos données

    Distanciel - 4h
    
    Nous allons nettoyer les données : nous allons éliminer les anomalies, nous allons completer les données manquantes et nous allons transformer les données, et nous allons manipuler des timeseries

    • Complétez la Partie1 du notebook iteration3/notebook10_data_preprocessing.ipynb
    • Publiez le fichier data/weather_madrid_clean.csv dans votre repository GitHub
    • Publiez le modifications de votre notebook sur votre respository GitHub
    • Complétez la Partie2 du notebook et publiez les modifications.

    Un fois que le notebook10 est complété vous pouvez valider la compétence   Nettoyer un ensemble de données grâce à Numpy et Pandas
  • Nous avons nettoyé nos données, nous avons aussi étudiés nos données et nous les connaissons mieux. Certaines techniques nous permettent de traiter nos données de façon a mieux modéliser un phénomène, ces techniques sont appelées Scaling et Normalisation. Dans cette section nous allons appliquer ces techniques pour améliorer nos données.


    Activité 1 : Un peu de théorie

    Distanciel - 4h

    Normaliser  et une technique qui permet d'uniformiser les données. Nous pouvons donc traiter des données avec des valeurs différents (température,  humidité, ...) de la même façon. Ça facilite aussi les calcules statistiques et la modélisation.

    Regardez cette video sur la normalisation : https://www.coursera.org/lecture/data-analysis-with-python/data-normalization-in-python-pqNBS

    Il y a plusieurs méthodes de normalisation. Nous allons utiliser une bibliothèque python pour cette procédure :  sklearn. Sklearn (ou SciKitLearn) met à votre disposition des fonctions pour normaliser nos données, pour créer des modèles statistiques et autres.

    Nous allons utiliser le module preprocessing de sklearn pour la normalisation et échelonnage. Regardez la documentation pour continuer : https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing


    Activité 2 : Premiers pas en preprocessing et sklearn

    Distanciel - 8h
    Nous allons nous familiariser avec preprocessing

    

    Activité 3 : Traitons les données météo

    Distanciel - 4h
    Nous allons appliquer les méthodes de sklearn pour normaliser nos données.

    • Complétez la Partie 3 du Notebook 11
    • Publiez le fichier data/weather_madrid_normal.csv dans votre repository GitHub
    • Publiez votre notebook
    Maintenant vous pouvez valider la competence normaliser un ensemble des données avec Sklearn


  • Notre premier modèle 

    Nous allons créer nos premiers modèles de prédiction en utilisant sklearn.

    Activité 1 : Estimation de la température moyenne à partir d'autres variables

    Distanciel - 8h
    Nous allons utiliser le module linear model de sklearn pour estimer la valeur de température à Madrid grâce au données que nous avons.

    • Ouvrez le notebook iteration4/notebook12_linear_regression.ipynb
    • Complétez le notebook et publiez les modifications sur GitHub. 

    Activité 2 : Estimation de la température moyenne à partir des valeurs passées

    Distanciel - 4h

    Nous allons utiliser le module linear model de sklearn pour estimer la valeur de température grâce aux valeurs passées de la même variable.

    • Ouvrez le notebook iteration4/notebook13_linear_regression_2.ipynb
    • Complétez le notebook et publiez les modifications sur GitHub.

    Une fois les notebooks 12 et 13 completés vous pouvez valider les compétences modéliser un variable grâce à la régression linéaire, Qualifier et tester un modèle et Apporter un regard critique aux résultats.