Vous êtes sur la page 1sur 2

projet2.

md 2024-03-18

TP Big Data n°6 - Notebook Jupyter intéractif


Ce TP est à réaliser en binôme.

Utilisez un notebook jupyter par question dans ce TP (question1.ipynb, question2.ipynb...) si vous le


désirez. Si vous groupez les questions, utilisez par exemple question1_2_3.ipynb, etc.

Une attention particulière sera donnée au temps d'exécution du code des différentes questions. Lorsque vous
traitez des enregistrements de table, des pixels, des nuages de points ou d'autres données, le temps
d'exécution est rédhibitoire dans un contexte Big Data, c'est-à-dire avec une très grande quantité de données.
Sur ces éléments, effectuer des boucles itératives depuis Python (for, while et autre) rend les performances
souvent abyssales. Pour ces raisons, votre code ne doit utiliser ces déclarations que s'il ne vous est pas
possible de faire autrement.

1. Proposez une visualisation interactive d'une gaussienne 2D, sous forme de maillage, avec moyenne et
écart-type réglables. Par interactif on entend dans cette question que régler ces dernières valeurs met
dynamiquement à jour votre figure. Discretisez votre maillage avec 100 × 100 points, où 100 est une
valeur réglable.
2. Proposez une visualisation interactive d'une gaussienne 3D avec la valeur de la fonction représentée
sous forme d'opacité variable, en bleu, sous forme de petits disques. Par interactif on entend dans cette
question que régler ces dernières valeurs met à jour votre figure. Echantillonnez votre gaussienne avec
500 points aléatoires, où 500 est une valeur réglable.
3. Considérez la base de données airportdb que vous allez utiliser avec Pandas (incluez les fichiers .csv
dans votre archive ; téléchargez-les depuis Moodle). Avec widgets.Play, créez une animation affichant
progressivement dans un graphique une courbe 2D faisant état du cumul du nombre de billets dans le
temps et dans une autre courbe superposée, du cumul du prix des billets. L'espace temporel visualisé
ne doit pas changer du début à la fin de la visualisation. Proposez un réglage pour filtrer sur une seule
compagnie aérienne et/ou sur un seul type d'avion.
Superposé à ces courbes, proposer un histogramme, par mois, montrant le nombre de vols (en
considérant la date de départ). Lorsque l'on clique sur une barre d'histogramme, affichez dans une
autre figure (ou sous-figure) une liste des vols partis ce mois-ci.
4. Implémentez le filtre de Marr & Hildreth avec numpy, avec une interface permettant de définir
interactivement la taille de deux filtres gaussiens, la méthode (normale ou hystérésis) et la valeur de
seuillage. Ne pas utiliser de boucles for. Affichez l'image finale et les deux images intermédiaires non
seuillées.
5. Générez une image permettant de visualiser, sous forme de couleurs différentes, l'itération i d'une
fonction si (X) , de R2 dans R2 : X est un vecteur à deux dimensions, et produit un vecteur à deux
dimensions).
si (X) est définie comme suit: si (X) = si−1 (X)2 +T . Pour chaque pixel X = (x, y) , on définit
s0 (X) = X . On définit X 2
= (x
2 2
− y , 2xy) . Pour chaque pixel, vous évaluez s0 et déterminez si la
norme du vecteur obtenue est inférieure à 10. Si c'est le cas, affichez le pixel correspondant, dans le cas
contraire, calculez s1 , et augmentez la valeur de i jusqu'à ce que la norme de si soit inférieure à 10.
Vous prendrez T = (0.33, 0.33) .
Votre image fera 250 × 250 pixels et permettra de visualiser le domaine (−1.8, −1.8) -(1.8, 1.8) de
R
2
. Vous ne devez pas avoir de boucle(s) parcourant les pixels, mais pouvez avoir une boucle pour i .

1/2
projet2.md 2024-03-18

Utilisez un nombre d'itérations maximales imax, par défaut à 220. Au delà de ce nombre d'itérations,
votre image reste noire.
6. Proposez maintenant la possibilité de zoomer dans le domaine de visualisation en donnant la
possibilité à l'utilisateur de dessiner un carré pour zoomer à un endroit précis. Vous devez recalculer les
valeurs correspondant au nouveau domaine visualisé et mettre à jour l'image.
7. Générez un plot 3D permettant d'afficher une pile d'images sur l'axe Z (vers le haut), les pixels de vos
images étant représentés par des cubes (voxels) dans l'espace 3D de votre plot. Affichez un cube rouge
lorsque vous aviez des pixels noirs dans la question 6, et rien sinon. L'axe Z est mappé sur la valeur de
T = (k, k) avec k variant de 0.1 à 0.5 , linéairement, sur vingt valeurs. Le cas échéant, proposez une
autre plage de valeurs permettant d'arriver à un résultat visuellement plus convaincant.
8. Avec widgets.Play, proposer un notebook pour jouer une animation sur une carte du monde
montrant tous les vols effectués, ceux présents dans airportdb. Vous accéderez aux données avec
Pandas (et non SQL). Ne livrez pas les fichiers .csv dans votre archive. Vous devez proposer des boutons
pour démarrer, mettre en pause et arrêter l'animation. La durée d'un pas de l'animation doit aussi être
paramétrable, exprimée en minutes, et avec une valeur de 10 minutes par défaut. Vous représenterez
les avions par des petits disques avec une couleur différente soit 1) par type d'avion 2) par compagnie
aérienne. Dans votre interface permettez de choisir entre ceux deux options.

2/2

Vous aimerez peut-être aussi