Résumé :
- A la fin du semestre, les étudiants rendront un projet informatique par groupe de 2-3 personnes.
- Ce projet dont le sujet est libre devra comporter
- Un jeu de données (de préférence collecté par le groupe ou a minima enrichi)
- De la visualisation
- De la modélisation
- Les étudiants sont invités à proposer des sujets qui leur plaisent, à faire valider par le chargé de TD.
- Le projet doit utiliser
Git
et être disponible sous Github ou gitlab (dépôt public ou dépôt privé à partager avec le chargé de TD) - La date du rendu est fixée au : 30 décembre 2023 23h59
- Le 12 janvier 2024, auront lieu des soutenances
Attentes du projet
Le projet est une problématique à laquelle vous souhaitez répondre à l’aide d’un ou de plusieurs jeu(s) de données.
Il faut donc dans un premier temps se pencher sur la recherche de problématisation et de contextualisation. Nous vous recommandons de prendre un sujet qui vous intéresse pour intéresser également le lecteur.
Trois dimensions doivent être présentes dans le projet. Pour chacune de ces parties, il est possible d’aller plus ou moins loin. Il est recommandé d’aller loin sur au moins une des 3 dimensions.
La récupération et le traitement des données
Ces données peuvent être directement disponibles sous la forme de fichiers txt, csv … ou provenir de sites internet (scraping, API). Plus le travail sur la récupération de données est important (par exemple scraping sur plusieurs sites), plus la partie obtiendra de points. Si le jeu de données utilisé est un téléchargement d’un jeu propre existant, il faudra chercher à le compléter d’une manière ou d’une autre pour obtenir des points sur cette partie.
Vous obtiendrez vraisemblablement des données qui ne sont pas « propres » du premier coup : mettez en place des protocoles de nettoyage pour obtenir à la fin de cette étape un ou des jeux de données fiable et robuste pour mener ensuite votre analyse. C’est également le moment de créer des variables plus appréhendables, mieux identifiées etc.
L’analyse descriptive et la représentation graphique
La présence de statistiques descriptives est indispensable dans le projet. De la description de la base aux premières grandes tendances des données, cette partie permet d’avoir une vision globale des données : le lien avec la problématique, comment elle permet d’y répondre, quels sont les premiers éléments de réponse… Chaque résultat doit être interprété : pas la peine de faire un describe et de ne pas le commenter. En termes de représentation graphique, plusieurs niveaux sont envisageables. Vous pouvez simplement représenter vos données en utilisant matplotlib, aller plus loin avec seaborn ou scikit-plot, (voire D3.js pour les plus motivés). La base d’une bonne visualisation est de trouver le type de graphique adéquat pour ce que vous voulez montrer (faut-il un scatter ou un line pour représenter une évolution ?) et de le rendre visible : une légende qui a du sens, des axes avec des noms etc. Encore une fois, il faudra commenter votre graphique, qu’est ce qu’il montre, en quoi cela valide / contredit votre argumentaire ?
La modélisation
Vient ensuite la phase de modélisation : un modèle peut être le bienvenu quand des statistiques descriptives ne suffisent pas à apporter une solution complète à votre problématique ou pour compléter / renforcer l’analyse descriptive. Le modèle importe peu (régression linéaire, random forest ou autre) : il doit être approprié (répondre à votre problématique) et justifié. Vous pouvez aussi confronter plusieurs modèles qui n’ont pas la même vocation : par exemple une CAH pour catégoriser et créer des nouvelles variables / faire des groupes puis une régression. Même si le projet n’est pas celui du cours de stats, il faut que la démarche soit scientifique et que les résultats soient interprétés.
Format du rendu
Sur le format du rendu, vous devrez :
- Écrire un rapport sous forme de
Notebook
(quelques exceptions à cette règle peuvent exister, par exemple si vous développer une appliDash
) - Avoir un répertoire
Github
avec le rapport. Les données utilisées doivent être accessibles également, dans le dépôt ou sur internet. - Les dépôts
Github
où seul un upload du projet a été réalisé seront pénalisés. A l’inverse, les dépôts dans lequels le contrôle de version et le travail collaboratif ont été activement pratiqués (commits
fréquents,pull requests
, ..) seront valorisés. - Le code contenu dans le rapport devra être un maximum propre (pas de copier coller de cellule, préférez des fonctions)
Ce post donne quelques conseils pour avoir des notebooks agréables à lire. N’oubliez pas cette règle :
code is read much more often than written
Lors de l’évaluation, une attention particulière sera donnée à la reproductibilité de votre projet. Chaque étape (récupération et traitement des données, analyses descriptives, modélisation) doit pouvoir être reproduite à partir du notebook final. Pour les opérations qui prennent du temps (ex : web scraping massif, requêtage d’API avec des limites de nombre de requêtes, entraînement de modèle, etc.), vous devez inclure l’output (base de données, modèle entraîné..) dans le dépôt, afin que les étapes suivantes puissent s’éxecuter sans problème. Le test à réaliser : faire tourner toutes les cellules de votre notebook et ne pas avoir d’erreur est une condition sine qua non pour avoir la moyenne.
Barème approximatif
- Données (collecte et nettoyage) : 4 points
- Analyse descriptive : 4 points
- Modélisation : 2 points
- Démarche scientifique et reproductibilité du projet : 4 points
- Format du code (code propre et github) : 2 points
- Soutenance : 4 points
Le projet doit être réalisé en groupe de trois, voire deux.
Projets menés par les étudiants
Citation
@book{galiana2023,
author = {Galiana, Lino},
title = {Python Pour La Data Science},
date = {2023},
url = {https://pythonds.linogaliana.fr/},
doi = {10.5281/zenodo.8229676},
langid = {en}
}