Ce site web rend public le contenu du cours de deuxième année (Master 1) de l’ENSAE: Python pour la data-science
Tout est présent sur ce site web ! Des Notebooks Jupyter
peuvent être récupérés
pour s’exercer. L’ensemble
des codes sources est stocké sur Github
L’accès à des bases de données de plus en plus riches permet
des modélisations de plus en plus raffinées. Cependant,
les modèles parcimonieux sont généralement préférables
aux modèles extrêmement riches pour obtenir de bonnes
performances sur un nouveau jeu de données (prédictions
out-of-sample). Les méthodes de sélection de variables,
notamment le LASSO
,
permettent de sélectionner le signal le plus
pertinent dilué au milieu du bruit lorsqu’on a beaucoup d’information à
traiter.
numpy
constitue la brique de base de l’écosystème de la data-science en
Python
. Toutes les librairies de manipulation de données, de modélisation
et de visualisation reposent, de manière plus ou moins directe, sur numpy
.
Il est donc indispensable de revoir quelques notions sur ce package avant
d’aller plus loin.
La régression linéaire est la première modélisation statistique
qu’on découvre dans un cursus quantitatif. Il s’agit en effet d’une
méthode très intuitive et très riche. Le Machine Learning permet de
l’appréhender d’une autre manière que l’économétrie. Avec scikit
et
statsmodels
, on dispose de tous les outils pour satisfaire à la fois
data scientists et économistes.
Les corpus textuels étant des objets de très grande dimension où le ratio signal/bruit est faible, il est nécessaire de mettre en oeuvre une série d’étapes de nettoyage de texte. Ce chapitre va explorer quelques méthodes classiques de nettoyage en s’appuyant sur le Comte de Monte Cristo d’Alexandre Dumas.
Afin d’avoir des données cohérentes avec les hypothèses de modélisation,
il est absolument fondamental de prendre le temps de
préparer les données à fournir à un modèle. La qualité de la prédiction
dépend fortement de ce travail préalable qu’on appelle preprocessing.
Beaucoup de méthodes sont disponibles dans scikit
, ce qui rend ce travail
moins fastidieux et plus fiable.
Ce chapitre continue de présenter l’approche de nettoyage de données
du NLP
en s’appuyant sur le corpus de trois auteurs
anglo-saxons : Mary Shelley, Edgar Allan Poe, H.P. Lovecraft.
Dans cette série d’exercice nous mettons en oeuvre de manière
plus approfondie les différentes méthodes présentées
précedemment.
Dans les entreprises et administrations, un nombre croissant
d’infrastructure se basent sur des clouds, qui sont des sessions
non persistentes où les données ne sont pas stockées dans les mêmes
serveurs que les machines qui exécutent du code. L’une des technologies
dominantes dans le domaine est un système de stockage nommé S3
,
développé par Amazon.
Python
, à travers plusieurs packages (notamment boto3
, s3fs
ou pyarrow
),
permet d’utiliser ce système de stockage distant comme si on
accédait à des fichiers depuis son poste personnel. Cette révolution est
étroitement associée à l’émergence du format de
données Apache Parquet
, format utilisable en
Python
par le biais du package pyarrow
ou avec Spark
et présentant
de nombreux avantages pour l’analyse de données (vitesse d’import, possibilité de traiter
des données plus volumineuses que la RAM…)
La programmation orientée objet (POO) est
l’un des atouts de Python
. Elle permet
d’adapter des instructions à un type particulier
d’objet. En apparence plus complexe que la programmation
fonctionnelle évoquée précédemment, elle permet néanmoins
de bien rélféchir à la structure des objets utilisés. Ce
chapitre vise à quelques rappels sur la programmation orientée objet.
Le modèle Latent Dirichlet Allocation (LDA)
est un modèle probabiliste génératif qui permet
de décrire des collections de documents de texte ou d’autres types de données discrètes.
La LDA
fait
partie d’une catégorie de modèles appelés “topic models”, qui cherchent à découvrir des structures
thématiques cachées dans des vastes archives de documents.
pandas
est l’élément central de l’écosystème Python
pour la data-science.
Le succès récent de Python
dans l’analyse de données tient beaucoup à pandas
qui a permis d’importer la
logique SQL
dans le langage Python
. pandas
embarque énormément de
fonctionalités qui permettent d’avoir des pipelines efficaces pour
traiter des données de volumétrie moyenne (jusqu’à quelques Gigas). Au-delà
de cette volumétrie, il faudra se tourner vers d’autres solutions
(PostgresQL
, Dask
, Spark
…).
ElasticSearch
est un moteur de recherche extrêmement rapide et flexible.
Cette technologie s’est imposée dans le domaine du traitement des
données textuelles. L’API Python
permet d’intégrer cette
technologie dans des processus Python
afin de les accélérer. Ce chapitre
présente cette intégration d’ Elastic
avec l’exemple de la recherche
dans les données alimentaires de l’ OpenFoodFacts
Database
La hype autour du
modèle de génération d’image Dall-E
a amené
une grande attention sur les modèles
autogénératifs de contenu. Dall-E
est, à l’heure
actuelle, le modèle le plus célèbre de génération
d’image à partir de texte. Il est maintenant
possible de créer, depuis Python
grâce à
l’implémentation de StableDiffusion
,
soit-même
ses propres images rigolotes.
Faire preuve de méthode pour évaluer la qualité d’un modèle permet de proposer des prédictions plus robustes, ayant de meilleures performances sur un nouveau jeu de données (prédictions out-of-sample). Décomposer l’échantillon initial en sous-échantillons d’entraînement et de tests, faire de la validation croisée, utiliser les bonnes mesures de performances peut se faire, grâce à scikit, de manière relativement standardisée. Cette démarche scientifique est essentielle pour assurer la confiance dans la qualité d’un modèle, ce qu’a illustré récemment un cycle de séminaire de Princeton
Les données géolocalisées se sont multipliées depuis quelques années, qu’il
s’agisse de données open-data ou de traces numériques géolocalisées de
type big-data. Pour les données spatiales, le package GeoPandas
étend les fonctionalités de l’écosystème Pandas
afin de permettre
de manipuler des données géographiques complexes de manière simple.
La cartographie est un excellent moyen de diffuser
une connaissance, y compris à des publics peu
familiers de la statistique. Ce chapitre permet
de découvrir la manière dont on peut
utiliser Python
pour construire des
cartes standards (avec geopandas
) ou
réactives (folium
). Cela se fera
à travers un exercice permettant
de visualiser la fréquentation par les
vélos des routes parisiennes.
Une partie essentielle du travail du
data-scientist est d’être en mesure
de synthétiser une information dans des
représentations graphiques percutantes. Ce
chapitre permet de découvrir
les fonctionalités graphiques de matplotlib
,
seaborn
et plotly
pour représenter des statistiques
sur les décomptes de vélo à Paris.
Le clustering consiste à répartir des observations dans des groupes, généralement non observés, en fonction de caractéristiques observables. Il s’agit d’une application classique, en machine learning de méthodes non supervisées puisqu’on ne dispose généralement pas de l’information sur le groupe auquel appartient réellement une observation. Les applications au monde réel sont nombreuses, notamment dans le domaine de la segmentation tarifaire.
La classification permet d’attribuer une classe d’appartenance (label
dans la terminologie du machine learning)
discrète à des données à partir de certaines variables explicatives
(features dans la même terminologie).
Les algorithmes de classification sont nombreux. L’un des plus intuitifs et
les plus fréquemment rencontrés est le SVM
(Support Vector Machine).
Ce chapitre illustre les enjeux de la classification à partir de
ce modèle sur les données de vote aux élections présidentielles US de 2020.
Une documentation complète sur Python
Tout est disponible sur Github
Un dépôt reposant sur les dernières innovations de la conteneurisation pour assurer un contenu reproductible