Accueil / Formations / Formation Python scientifique / Data scientist

Formation Python scientifique / Data scientist

Python est devenu un langage de choix pour les scientifiques, en raison de sa simplicité de mise en œuvre et de la richesse de son écosystème, notamment grâce à ses nombreuses et performantes librairies de calculs numériques bien souvent développées par les scientifiques eux-mêmes. Python est probablement le seul langage à offrir aux informaticiens un environnement open-source complet dédié à la recherche scientifique, aux sciences de l'ingénieur et aux mathématiques.

Objectifs

  • Utiliser les principales librairies de calcul numérique dont Numpy, SciPy, Pandas et Matplotlib
  • Paralléliser ses traitements sur des architectures modernes permettant le calcul distribué

Programme

La formation se fait essentiellement par la pratique. Les supports de cours fournissent tous les éléments théoriques nécessaires à la mise en œuvre des exercices et évitent aux stagiaires de devoir prendre trop de notes afin qu'ils puissent se concentrer sur les exercices pratiques.

Chaque notion présentée est testée et démontrée à travers de petits exercices mis en œuvre par chaque stagiaire. Ces exercices permettent de bien comprendre la mécanique gérant l'élément de cours étudié. Puis ces notions sont mises en œuvre à travers un projet central dont la problématique sera enrichie tout au long de la formation.

Première partie: Présentation de l'écosystème scientifique

Cette première partie offre une vue d'ensemble de l'écosystème scientifique qui s'est développé autour du langage Python. Il vous apporte une large vision des domaines couverts en présentant plusieurs librairies phares. Vous apprendrez à choisir vos outils et y voir clair pour trouver votre route dans cet environnement ou il est facile pour les nouveaux arrivants de perdre pieds tant l'univers des disciplines abordées et solutions proposées est grand.

1. Présentation de quelques librairies scientifiques populaires

L'univers scientifique de Python touche quasiment tous les domaines des sciences. Nous vous proposons un tour d'horizon de certaines librairies qui contribuent à faire son succès et vous aideront à visualiser ce vaste monde.

2. Choisir sa distribution

Vous pouvez choisir d'installer vos librairies manuellement, mais se baser sur une distribution Python scientifique facilite grandement la mise en place d'un environnement de travail simple et fonctionnel.

3. Optimiser vos librairies

Python scientifique rime généralement avec BigData. Et dans ce cas, la performance est de rigueur.

  • Compiler la scipy stack avec les librairies de calculs vectoriels adaptées à votre architecture
    Atlas, Blas, Lapack, OpenBlas, Intel MKL, AMD ACML, ...
  • Compiler les autres librairies avec leurs dépendances

4. Les outils de développement

Un bon ouvrier a toujours de bons outils

Deuxième partie : Calcul scientifique

Dans ce chapitre nous aborderons les librairies de la Scipy Stack.

1. Considérations de base sur la représentation des nombres en informatique et avec Python

  • Les problématiques de représentation des nombres en informatique et les erreurs d'arrondis
  • Les normes (virgule flottante et fixe)
  • Techniques pour gérer les erreurs de calcul

2. Numpy

Numpy est une librairie Python de calcul numérique (algèbre linéaire) permettant de manipuler des vecteurs et matrices à plusieurs dimensions. Elle offre des types de données avancés pouvant être gérés très simplement. Implémentée en langage C elle mixe le meilleur des 2 mondes: la souplesse du langage Python avec les performances du C.

  • Les types de données et de tableaux gérés par Numpy
  • Indexation et manipulation de tableaux
  • Les fonctions utiles: création, association, manipulation, extraction de données
  • Entrées/Sorties et formats de fichiers : natif Numpy, NetCDF, HDF5, Matlab

3. Scipy

SciPy fournit un ensemble d'algorithmes mathématiques et de fonctions utilitaires qui s'appuient sur la librairie Numpy.

  • Algèbre linéaire (vecteurs, matrices, résolution d'équations linéaires)
  • Analyse numérique (intégration, équations différentielles, interpolation, regression, optimisation)
  • Entrées/Sorties
  • Traitement du signal(transformées de Fourier, filtres)
  • Statistiques et data mining (corrélation, distribution)

4. Pandas

Pandas est une librairie permettant d'analyser avec efficacité des structures de données complexes. Pandas permet de manipuler des matrices dont chaque colonne peut être d'un type différent et offrant de nombreuses et puissantes fonctionnalités de manipulation, réduction, recherche et statistiques.

  • Séries
  • Matrices riches (DataFrame)
  • Sélection et indexation des données
  • Manipulations de données (groupement, ajout, suppression, redimensionnement, pivots, …)
  • Opérations et statistiques
  • Entrées/Sorties

Troisième partie: Visualisation de données

La visualisation est un aspect essentiel de l’analyse de données. Elle offre une ligne d’attaque frontale, révèle la structure complexe de données qui ne pourraient être comprises d’aucune autre façon. Elle permet de découvrir des résultats inattendus et de remettre en question les conclusions attendues. William S. Cleveland (Visualizing Data, 1993)

1. Voir plus clair dans l'écosystème des librairies de visualisation Python

Nous vous présentons ici les principales librairies de visualisation disponibles pour Python. Le choix étant vaste, il est utile d'y voir clair pour connaître les solutions à votre disposition et choisir celles qui seront les plus adaptées à vos besoins.

  • Matplotlib, la reine mère
  • Seaborn, basée sur matplotlib elle offre des fonctionnalités avancées pour les tracés de statistiques
  • Folium, pour la visualisation de vos données sur des cartes
  • Vispy, library OpenGL 2D/3D exploitant les performances des GPU modernes spécialisée pour la visualisation de larges volumes de données
  • Pygal, librairie générant des graphiques SVG, adaptés pour le Web
  • NetworkX, librairie de graphes offrant de nombreuses possibilités de rendus
  • GGPlot, interface Python vers la librairie R ggplot2
  • Mayavi, pour le rendu de surfaces 3D
  • Les librairies pour le web : Plot.ly, Bokeh, D3/C3js
  • OpenCV, librairie graphique spécialisée dans le traitement d'images

2. Les bases avec Matplotlib

Matplotlib est une librairie de tracé et de visualisation de données. Elle permet de dessiner tout type de représentations, 2D comme 3D, lesquelles peuvent être interactives avec l'utilisateur.

  • Les concepts de Matplotlib
  • Titres, légendes, annotations
  • Axes, échelles de représentations
  • Couleurs et styles
  • 2D/3D
  • Travailler avec plusieurs graphiques
  • Interaction avec l'utilisateur

3. Less is more

  • Sémiologie graphique (graphic grammar)
  • L'art de mettre en avant ses données en simplifiant ses graphiques

4. Les librairies orientées Web

  • Bokeh, D3/C3js, Pygal, Plot.ly,

5. Manipuler des jeux de données très larges

  • Comprendre les limites de matplotlib
  • Agrégation, décimation
  • Autres outils adaptés à la manipulation de larges volumnes de données: Bokeh, Vispy, ParaView, VisIt
  • Paralléliser les graphiques

Quatrième partie : Le Calcul distribué

1. Présentation

  • Qu'est-ce que le parallélisme, la programmation concurrente ?
  • Différences entre multithreading et multiprocessing et intérêts respectifs
  • Parallélisme, Cluster computing, grid computing et cloud computing

2. Multithreading

  • Le module threading
  • Démarrer, arrêter un thread
  • La synchronisation
  • Pourquoi le module multithreading de Python n'est pas vraiment une solution professionnelle viable : le GIL
  • Les librairies ou versions de Python contournant ce problème: Stackless Python, Jython, IronPython, Greenlet

3. Multiprocessing

  • Le module multiprocessing
  • Le même exercice que pour les threads revisité avec les processus : une ligne de code à changer, ou presque…
  • Faire communiquer des processus : Queues, Pipes, mémoire partagée, Proxy Objects, listeners et clients
  • Les managers et pool of workers

4. Calcul distribué avec Celery et RabbitMQ (optionnel)

Ce module optionnel est proposé en alternative au chapitre PySpark ci-après

  • Présentation & Installation de RabbitMQ et Celery
  • Première application
  • Les producers, workers et backend
  • Les tâches
  • Les files d'attentes
  • Chaînage et groupement de tâches
  • Configuration et administration de Celery et RabbitMQ
  • Optimisations et attentions particulières

5. Calcul distribué avec PySpark (optionnel à partir de 2017)

Ce module est proposé en alternative au chapitre Celery ci-avant. Ce module ne sera proposé qu'à partir de 2017.

  • Présentation de Spark
    • Les styles d'analyses (batch, streaming, itérative, interactive)
    • Les modes de fonctionnement (single, standalone, distributed)
    • Les librairies (SQL, MLLIB, Streaming, GraphX)
  • Présentation du fonctionnement de la librairie PySpark
  • Présentation de la librairie Blaze
  • Installation de Spark
  • Première application
  • Les différents types d'analyses avec PySpark (SQL, Machine Learning, Streaming, GraphX)
  • Exploration de données avec PySpark et Blaze

Cinquième partie: Apprentissage automatique - Machine Learning

Depuis maintenant plusieurs décennies l'informatique concourt à façonner notre histoire : depuis l'apparition des mainframes dans les entreprises, des PC pour les particuliers et aujourd'hui avec le Cloud.

Nous pouvons de nos jours lancer des calculs complexes et analyser des milliards de données pour des coût dérisoires. Cela dope la recherche et donne son envol à l'intelligence artificielle.

"Google’s self-driving cars and robots get a lot of press, but the company’s real future is in machine learning, the technology that enables computers to get smarter and more personal."
- Eric Schmidt (Google Chairman)

1. Les différents types d'apprentissage et leurs principaux algorithmes

Ce chapitre plus théorique présente les concepts de l'apprentissage automatique et les principaux algorithmes utilisés par cette discipline.

  1. Les types d'apprentissage
    • L'apprentissage supervisé
    • L'apprentissage non supervisé
    • L'apprentissage par renforcement
    • L'apprentissage par transfert
  2. Les algorithmes
    • Linear Regression (régression linéaire)
    • Logistic Regression (régression logistique)
    • Decision Tree (arbre de décision)
    • SVM (machines à vecteur de support)
    • Naive Bayes (classification naïve bayésienne)
    • KNN (Plus proches voisins)
    • Dimensionality Reduction Algorithms
    • Gradient Boost & Adaboost
    • Réseaux de neurones
  3. Quelques librairies populaires de machine learning avec Python
    • Annoy, librairie extrêmement rapide implémentant la recherche des plus proches voisins
    • Caffe, Deep learning framework
    • Chainer, Framework intuitif pour les réseaux de neurones
    • neon, Deep Learning framework extrêmement performant
    • NuPIC, Plateforme d'IA implémentant les algorithmes d'apprentissage HTM
    • Shogun, Large Scale Machine Learning Toolbox
    • TensorFlow, Réseau de neurones disposant d'une API de haut niveau
    • Theano, Librairie d'apprentissage automatique destinée à évaluer et optimiser des expressions mathématiques
    • Torch, Framework d'algorithmes d'apprentissage très performant disposant de binding Python

2. Scikit-Learn

Scikit-Learn est probablement la plus populaire librairie d'algorithmes d'apprentissage automatique pour Python et peut-être même tous langages confondus.
Elle possède un grand nombre de fonctionnalités spécialisées dans l'analyse de données et le data Mining qui en font un outil de choix pour les chercheurs et développeurs.

Ce chapitre vous permettra de mettre en œuvre un cas concret d'apprentissage automatique via la mise en place d'un jeu de données et d'une recherche des plus proches voisins

Sixième partie : Accélérer Python/Numpy

Cette section présente différentes approches disponibles pour accélérer vos projets Python, en utilisant différentes techniques de compilation.

  • Cython
  • Pypy
  • Parakeet
  • Hope
  • Numba
  • Pyston
  • Nuitka

Sessions (Toulouse, Nantes, Paris)

  • du 27 nov. au 01 déc.
    Paris - COMPLET
  • du 29 janv. au 02 févr.
    Paris
  • du 12 au 16 févr.
    Toulouse, Nantes
  • du 19 au 23 mars
    Paris
  • du 14 au 18 mai
    Paris
  • du 25 au 29 juin
    Toulouse, Nantes
  • du 24 au 28 sept.
    Paris, Nantes, Toulouse

Nous contacter

Public

  • Toute personne travaillant dans des secteurs ayant de forts besoins en calculs et simulations mathématiques
  • Informaticiens, scientifiques, chercheurs et ingénieurs travaillant dans les domaines comme les sciences physiques, la chimie, les sciences des matériaux, la génétique, la mécanique des fluides, l'aérospatiale, les statistiques, le monde de la finance, etc...

Pré-requis

  • Connaître l'algorithmie
  • Avoir une première expérience du langage Python
  • Connaître quelques rudiments mathématiques, trigonométrie (sinus, cosinus) et algèbre linéaire (calcul matriciel)

Ces pré-requis seront contrôlés et validés sous forme d’entretien téléphonique réalisé au plus tard 2 semaines avant la formation.

En cas de non adéquation, des solutions alternatives seront proposées.

Durée

5 jour(s) soit 35 heures

Prix

2500 € par personne

Moyens pédagogiques et techniques

  • les supports de cours (slides) seront disponibles en ligne et distribués en début de formation (à l'aide d'un lien vers notre outil interne ou d'une version numérisée), puis fournis au format électronique à la fin de la formation

  • une salle de formation équipée d'une connexion Internet, d'un vidéoprojecteur, paperboard...

  • un ordinateur par stagiaire avec un système d'exploitation installé et les outils nécessaires

Modalités de suivi de l'exécution du programme

  • durant la formation : alternance d'apports théoriques (35% du cours) et d’exercices pratiques et de mise en situation sous forme de travaux pratiques corrigés avec l’expert-formateur

  • en fin de formation : évaluation à chaud sur l'atteinte des objectifs pédagogiques sous forme de tour de table et de test de connaissances, d'exercices, de QCM

Moyens d'encadrement

  • Formation assurée par un expert Python connaissant les librairies scientifiques

CS"Très bonne formation, très riche et toujours dans la bonne ambiance !"

Jules DAVID - CS Systèmes d'information 

"Une excellente formation aux derniers aspects de Python pour la data science." Saint-Gobain recherche

Mathieu - Saint-Gobain Recherche

Airbus"Le formateur s'adapte parfaitement au niveau de chacun et adapte le contenu aux souhaits des stagiaires."

Benjamin - Airbus

"Très bon formateur, formation intéressante et sur beaucoup de sujets variés." exostaff

Youva - Exostaff

Pôle Emploi"Bonne formation, permet d'avoir une vue globale des différentes applications scientifiques de Python"

Fikria - Pôle Emploi

"Formation en petit groupe très complète sur le data science en Python" IFPEN

Walid - IFPEN

"Très bonne formation de par son programme très riche et de par la qualité du formateur. Très investi et à l'écoute de nos besoins, il a adapté "à la volée" le contenu de la formation en fonction de nos souhaits et de notre niveau. Merci !LATMOS

Aurélie REBERAC - LATMOS

"Formation Python scientifique très riche et très bien documentée. Nombreux supports pour approfondir sois-même. Formateur très pédagogique, motivé et disponible. Je recommande cette formation pour toute personne voulant faire du Python scientifique.LATMOS

C.L, chercheur en physique de l'atmosphère - LATMOS