- Mise en place d'un système de recommandation bien commenté en Python
- Rédaction du rapport de projet.
L'objectif de ce projet est de recommander des images en fonction des préférences de l'utilisateur. Vous disposez de trois séances pratiques pour construire ce système. Vous devez vous assurer que toutes les tâches liées à l'acquisition, l'annotation, l'analyse et la visualisation des données sont automatisées.
Les principales tâches du projet sont présentées ci-dessous :
- Collecte de données
- Étiquetage et annotation
- Analyses de données
- Visualisation des données
- Système de recommandation
- Tests
- Rapport
Vous devez collecter et télécharger un ensemble d'images. Vous avez les tâches suivantes à programmer, en automatisant le processus autant que possible :
- Créer un dossier appelé images.
- Télécharger les images sous licence ouverte dans le dossier images (minimum 100 images).
- Enregistrez les métadonnées de chaque image comme la taille de l'image, le format de l'image (.jpeg, .png, etc.), l'orientation de l'image (paysage, portrait, carré, etc.), date de création, modèle d'appareil photo, etc. dans un ou plusieurs fichiers JSON. Vous pouvez utiliser les informations Exif présentes dans les fichiers d'images.
Pour cette tâche, vous devez rechercher les sources disposant d'informations supplémentaires comme les balises, les catégories, etc.
Dans cette tâche, vous devrez peut-être étiqueter, annoter et enregistrer des informations sur chaque image. Vous pouvez analyser les images en utilisant des algorithmes de regroupement pour trouver les couleurs prédominantes.
Vous disposez déjà de certaines métadonnées provenant de l'EXIF des images de la précédente tâche. Dans cette tâche, votre objectif est d'obtenir des informations supplémentaires, comme les couleurs prédominantes, les tags. Et si vous demandiez aux utilisateurs de tagger les images ? Par exemple, les noms de couleurs, #cat, #fleur, #sous-fleur, rose etc.
Comment prévoyez-vous de traiter ces tags ? Est-il possible d'automatiser ce processus ?
Demandez à l'utilisateur de sélectionner quelques images et d'ajouter des balises. Pour chaque utilisateur, vous êtes maintenant prêt à construire un profil de préférences d'utilisateur, basé sur cette sélection. Vous pouvez recueillir les informations suivantes manuellement, mais l'objectif de cette tâche consiste à les obtenir en utilisant les images sélectionnées de manière automatisée :
- Couleurs préférées
- Orientation de l'image préférée
- Tailles d'images préférées (vignettes, grandes images, images de taille moyenne images, etc.)
- Balises favorites
- ...
Maintenant, grâce à votre connaissance des différents types de classificateurs et les algorithmes de regroupement, quelles informations supplémentaires ajouterez-vous pour chaque image ?
Votre prochain objectif est d'analyser les informations des utilisateurs et leur les images préférées. Comment avez-vous créé des utilisateurs aléatoires ? Combien d'utilisateurs avez-vous créer ? Quelles informations avez-vous stockées pour chaque utilisateur ? Quels types d'analyses avez-vous effectuées ?
Dans cette tâche, votre objectif est de visualiser les différentes caractéristiques de toutes les images téléchargées.
- Le nombre d'images disponibles pour chaque année
- Le nombre d'images disponibles pour les différents types : taille de l'image, l'orientation des images, les modèles d'appareils photo, etc.
- Caractéristiques des couleurs
Les utilisateurs peuvent également visualiser les informations ci-dessus relatives à leurs images préférées. Dans cette tâche, vous devez également ajouter une fonctionnalité permettant aux utilisateurs de visualiser les informations liées à leur propre profil d'utilisateur.
Êtes-vous maintenant prêt à recommander des images à un utilisateur ? Dans cette tâche, votre objectif est de construire le système de recommandation. Quelle approche avez-vous décidé de prendre ? Filtrage collaboratif, basé sur le contenu ou une approche hybride ? Pour chaque utilisateur, êtes-vous maintenant en mesure de construire une profil ? Quel type d'information avez-vous utilisé pour établir un profil d'utilisateur profil ? Qu'est-ce qui manque ? Quelles sont les limites de votre proposition ?
Votre prochaine tâche consiste à mettre au point et à effectuer différents tests sur votre proposition système. Les différentes fonctions sont-elles fonctionnelles ? Comment avez-vous testé votre projet ? Comment vérifiez-vous que votre système de recommandation fonctionne ?
Votre tâche finale consiste à préparer un rapport de 5 pages sur le projet (en français ou en anglais) en format PDF, qui détaille les points suivants :
- Le but de votre projet
- Sources des données de vos images et leurs licences.
- Taille de vos données.
- Informations que vous avez décidé de stocker pour chaque image.
- Informations concernant les préférences de l'utilisateur
- Les modèles d'exploration de données et/ou d'apprentissage machine que vous avez utilisés avec les métriques obtenues.
- l'auto-évaluation de votre travail.
- Remarques concernant les séances pratiques, les exercices et les possibilités d'amélioration.
- Conclusion
Note : Veuillez n'ajouter aucun programme (ou code) dans ce rapport.
- Veuillez ne pas soumettre vos images.
- Renommez votre rapport de projet sous le nom de Nom1_Nom2_[Nom3].pdf, où Nom1, Nom2, etc. sont vos noms.
- Ajoutez votre rapport de projet dans votre dossier de projet.
- Compressez et renommez votre travail de projet comme Nom1_Nom2_[Nom3].zip, où Nom1, Nom2 sont vos noms.
- Soumettez votre projet en ligne.
Les critères d'évaluation des projets sont indiqués ci-dessous :
- Collecte de données
- Approches automatisées de la collecte de données
- Utilisation d'images sous licence libre
- Stockage et gestion des images et des métadonnées associées
- Étiquetage et annotation
- Approches automatisées de l'étiquetage
- Stockage et gestion des étiquettes et des annotations des images
- Utilisation d'algorithmes de classification et de regroupement
- Analyses de données
- Types d'analyses utilisées
- Utilisation de Pandas et Scikit-learn
- Utilisation d'algorithmes d'exploration de données
- Visualisation des données
- Types de techniques de visualisation utilisées
- Utilisation de matplotlib
- Système de recommandation
- Stockage et gestion des préférences et du profil de l'utilisateur
- Utilisation d'algorithmes de recommandation
- Tests
- Présence de tests fonctionnels
- Présence de tests utilisateurs
- Rapport
- Clarté de la présentation
- Présence d'une introduction et d'une conclusion claires, architecture des diagrammes, un résumé des différentes tâches réalisées et des limites
- Bibliographie
Rémarque: Vous pouvez consulter des exemples supplémentaires de notebooks.
L'objectif de cette partie est de modulariser les différentes tâches effectuées dans la partie 1 et de créer des composants installables pour chacune d'entre elles en utilisant Docker.
Pour cette partie, vous devez identifier les différentes tâches indépendantes de la partie 1 de votre projet. Une fois ces tâches identifiées, effectuez les opérations suivantes sur chaque tâche :
- Identifiez la partie répétitive (par exemple, les boucles).
- Remplacer la partie répétitive par map-reduce, expressions lambda et pyspark.
- Créez un conteneur Docker pour cette tâche.
- Utilisez des volumes Docker pour le partage de fichiers (CSV, JSON, images, etc.) entre les conteneurs.
Vous devez disposer d'un minimum de trois conteneurs pour votre projet. Par exemple, un conteneur Docker pour l'acquisition des données, un autre pour l'analyse des données et un autre pour la recommandation. Vous pouvez avoir des conteneurs supplémentaires.
Les critères d'évaluation du projet sont donnés ci-dessous :
- Création de différentes tâches indépendantes.
- Utilisation de volumes Docker pour le partage de données entre différents conteneurs.
- Utilisation du framework map-reduce et des expressions lambda.
- Utilisation de pyspark.
Rémarque: Vous pouvez consulter des exemples supplémentaires de Docker.