Python pour un Data Scientist / Economiste

ENSAE - OMI2F2

Cours animé par : Xavier Dupré (ENSAE 1999) [1], Anne Muller (ENSAE 2012) [1], Elodie Royant (ENSAE 2008) [2], Antoine Thabault (ENSAE 2012) [2], Jérémie Jakubowicz (ENSAE 2002) [2], Nicolas Rousset [2], Antoine Ly (ENSAE 2015), Benjamin Donnot (ENSAE 2015), Gaël Varoquaux [2]

Ce cours s’étale sur 6 séances de cours/TD d’une durée de 4h. Les outils proposés sont en langage Python. Ils sont tous open source, pour la plupart disponibles sur GitHub et en développement actif. Python est récemment devenu une alternative plus que probante pour les scientifiques et comme c’est un langage générique, il est possible de gérer l’ensemble des traitements appliqués aux données, depuis le traitements des sources de données jusqu’à leur visualisation sans changer de langage.

Le cours est prévu pour des profils plutôt statistiques Statistique ou plutôt économiques Economie. Ces images reviendront pour indiquer si les contenus s’adressent plutôt aux uns ou aux autres. La présentation ENSAE 2A - Données, Machine Learning et Programmation slideslogo donne un aperçu des thèmes abordés.

Thèmes :




Visualisation

Graphes

Economie Statistique

Plan

  • Présenter 10 plotting libraries at PyData 2016.
  • Grouper les étudiants par deux
  • Considérer un jeu de données
  • Chaque groupe essaye une librairie différente
  • Insister sur la visualisation de gros jeu de données

Il existe de nombreuses librairies de visualisation réparties en deux grandes familles. La première produit des images (matplotlib, seaborn, networkx), la seconde produit des graphes animés à l’aide de Javascript (bokeh, bqplot). Les librairies les plus récentes implémentent les deux modes en cherchant toujours plus de simplicité. A ce sujet, il faut jeter un coup d’oeil à flexx. Elles explorent aussi la visualisation animée de gros jeux de données telle que datashader.

Notebook sur matplotlib

Notebook sur Javascript

Modules


Transformations des données


Machine Learning - Formalisation

Deep Learning

Statistique

Notebooks

Tutoriel

Sites

Modèles pré-entraînés

Lectures

Chiffres, Textes

Plus théoriques

Lectures deep text

Modules

à suivre


Machine Learning Avancé


NLP - Image - Réseaux

Images

Economie Statistique

(à venir)

Lectures


Techniques de programmation et algorithmes

Parallélisation, sérialisation

Statistique

La sérialisation est le fait de convertir n’importe quelle structure de données en un tableau d’octets, c’est indispensable pour la communication entre deux machines, deux processus.

Notebooks

Modules

Lectures


Data Scientist en liberté

Contrairement à ce qu’on pense, les datascientists sont plus prévisibles que les données.

machine learning

quoi d’autres ?

installation


Bibliographie

Livres sur le machine learning

Livres sur les algorithmes

Livres sur la programmation

  • High Performance Python, Micha Gorelick, Ian Ozsvald.
    Le livre est très bien conçu et les exemples sont très clairs. Si vous souhaitez accélérer un programme Python en utilisant le multithreading, OpenMP, Numba, Cython PyPy, ou CPython, je recommande d’y jeter un coup d’oeil d’abord.

Liens sur la programmation

Tutoriels

MOOC

Autres cours, notebooks

Articles d’auteurs très connus

Compétition de code

Pour finir, Choosing the right estimator :

http://scikit-learn.org/stable/_static/ml_map.png

Librairies Python

Librairies de machine learning

Vidéos

next year

Todo(plus): Retravailler la partie visualisation de Python pour un data scientist

Il manque un notebooks sur les visualisations les plus utilisées en machine learning, ROC, régression, visualisation d’arbres de décision avec ete3, les cartes. Insister sur l’interactivité. Voir TD 4B : Visualisation (correction), ce notebook présente un moyen de faire une carte géographique, des graphes zoomables.

Todo(plus): aborder d’autres librairies

py-earth, pytorch, boruta, wendelin.core, zodb, (requires transaction, zc.lockfile, zodbpickle, ZODB, zdaemon, ZEO, ZODB3, wendelin.core), ghost.py (scrapping) h5py, PyTables, lda See Related Projects, Python extensions to do machine learning

Todo(plus): techniques de webscrapping

Todo(plus): aborder les formats de données sparses (CRS, ...)

See Compressed Sparse Row Format (CSR).

Todo(plus): ajouter un notebook sur joblib

joblib est utilisé par scikit-learn pour paralléliser les calculs

Todo(plus): ajouter un notebook sur numba, llvmlite

Il n’y pas que CPython pour ooptimiser les calculs. Aborder les notions de JIT.

Todo(plus): ajouter MILP

avec des modules tels que pyomo, lire Mixed integer programming for machine learning, GLPK/Python, optlang

Todo(plus): ajouter ctypes

utilisation du module ctypes pour les import C++ + un exemple de sklearn-compiledtrees

Todo(plus): multi-label, coverage_error

fonction coverage-error, lire Mining Multi-label Data

Todo(plus): ajouter projections

parler plus précisément des projections, de la réduction des dimensions

Todo(plus): HMM

parler de Modèles de Markov cachés HMM avec des mélanges de gaussiennes pour analyser les séries temporelles hmmlearn, seqlearn, pomegranate

Todo(plus): modules, framework à regarder

[1](1, 2) Contributeur, encadrant et coordinateur du cours.
[2](1, 2, 3, 4, 5) Contributeur, encadrant.