SQLite
 sql >> Base de données >  >> RDS >> SQLite

Création d'une application de recommandation de films Django à l'aide de Jaccard Index

Mes objectifs pour ce projet

  • Comprendre les composants clés du framework Django
  • Décrire les principes de base d'un système de recommandation
  • Créer une application de recommandation de films simple, en appliquant l'algorithme Jaccard basé sur un mécanisme de filtrage de contenu

Référentiel Github https://github.com/jamattey/Django-Movie-Recommendation

Pile technologique

  • Django Backend
  • Interface HTML
  • CSS d'amorçage
  • Base de données SQLite

À propos du framework Django

Django divise sa logique d'application en trois composants de type Modèle-Vue-Contrôleur :

Django Model gère la modélisation des données et le mappage de la base de données ainsi que la logique métier pour traiter les données

Django View décrit quelles données sont présentées, mais pas comment elles sont présentées. Typiquement, Django View délègue et rend une page HTML, qui décrit comment les données sont présentées

Django Template génère des pages HTML dynamiques pour présenter des données

Lorsqu'un client envoie une requête, le serveur Django achemine la requête vers la vue appropriée en fonction de la configuration de l'URL Django et agit comme un contrôleur traditionnel

Modèles Django
Django utilise les modèles Django pour représenter les tables de base de données et les mapper à des objets, tels que le processus est appelé ORM. Django Models essaie de faciliter la vie du développeur en extrayant les bases de données et en mappant automatiquement les objets et les méthodes dans des tables et des requêtes SQL.

Il vous suffit de définir des classes en tant que modèles Django et elles seront ensuite mappées aux tables de la base de données en conséquence. Ensuite, vous pouvez simplement utiliser l'API Django Models pour effectuer CRUD sur les tables de la base de données sans écrire une seule ligne de SQL

Vues de Django
Dans Django, une vue est essentiellement une fonction Python. Une telle fonction prend une requête Web et applique la logique nécessaire pour générer une réponse Web, telle que le contenu HTML d'une page Web, une redirection, une erreur 404, un document XML, une image ou toute autre réponse Web. Souvent, View interagit avec les modèles Django pour obtenir les données requises sous la forme de QuerySet ou d'objets pour générer une réponse Web.

Processus de développement d'applications Django


Tout d'abord, j'ai créé un projet Django qui est un conteneur pour les applications et paramètres Django. Ici, je peux décider de créer et d'ajouter une ou plusieurs applications Django au projet.

Dans Core Development, j'ai créé des modèles Django pour modéliser les données et créé des vues pour déterminer quelles données doivent être présentées à l'interface utilisateur. Je mappe également les URL de requête à nos vues afin que Django puisse transmettre les requêtes aux vues correspondantes via les URL. Ensuite, nous pouvons commencer à concevoir et à créer l'interface utilisateur.

Ces films sont remplis dans un CSV. Le site n'héberge pas de films réels, mais c'est un moteur de recommandation utilisant un code normal et une base de données.

Ce moteur de recommandation n'utilise pas le Machine Learning.......pour l'instant 😂😂

Pour que la recommandation fonctionne réellement, je devais d'abord marquer les films qu'un utilisateur a regardés à l'aide du site Django Admin. Ensuite, j'ai écrit un algorithme de recommandation basé sur les films regardés.

Marquage des films regardés dans Django Admin

  • Lancer le serveur Django
  • visitez l'URL d'administration app_url/admin
  • Ensuite, cliquez sur l'entrée du film, marquez-le comme visionné et appuyez sur Enregistrer.

Exécutez make_recommendations CMD pour générer des recommandations

Pour tout système de recommandation, l'idée clé est toujours de trouver un bon algorithme/modèle pour prédire si un utilisateur spécifique aimera ou n'aimera pas son article non vu, comme le montre la capture d'écran suivante :

Il existe probablement des centaines de bons algorithmes de recommandation et peuvent être grossièrement divisés en deux catégories :

Filtrage de contenu basé :

Les algorithmes de recommandation basés sur le filtrage de contenu supposent que vous aimerez peut-être un nouveau film si vous avez déjà regardé des films très similaires. Ou en fonction de votre profil d'utilisateur (comme l'âge, le sexe, les intérêts), il essaiera de trouver de nouveaux films correspondant à votre profil.

Filtrage collaboratif basé :

Les algorithmes de filtrage collaboratif supposent que vous aimerez peut-être un nouveau film si d'autres utilisateurs similaires à vous (profil similaire ou ont regardé des films similaires) ont regardé ce film.

Dans ce projet, nous utiliserons un algorithme basé sur le filtrage de contenu et nous essaierons de vous recommander des films non regardés/nouveaux s'ils sont similaires à vos films regardés.

Comment calcule-t-on une telle similarité de film

Ici, nous allons utiliser la similarité de Jaccard qui est probablement la méthode la plus simple mais la plus efficace pour calculer la similarité entre deux ensembles.

La similarité Jaccard est définie comme la taille de l'intersection de deux ensembles divisée par la taille de l'union de ces deux ensembles.