sql >> Databasteknik >  >> RDS >> SQLite

Skapa en app för Django Movie Recommendation med Jaccard Index

Mina mål för det här projektet

  • Förstå nyckelkomponenterna i django-ramverket
  • Beskriv de grundläggande principerna för ett rekommendationssystem
  • Skapa en enkel app för filmrekommendationer genom att använda Jaccard Algorithm baserad på innehållsfiltreringsmekanism

Github Repository https://github.com/jamattey/Django-Movie-Recommendation

Tech Stack

  • Django Backend
  • HTML-gränssnitt
  • Bootstrap CSS
  • SQLite-databas

Om Django Framework

Django delar upp sin applikationslogik i följande tre Model-View-Controller-liknande komponenter:

Django Model hanterar datamodellering och databaskartläggning samt affärslogik för att bearbeta data

Django View beskriver vilken data som presenteras, men inte hur den presenteras. Vanligtvis delegerar och renderar Django View en HTML-sida som beskriver hur data presenteras

Django Template genererar dynamiska HTML-sidor för att presentera data

När en klient skickar en begäran dirigerar Django-servern förfrågan till lämplig vy baserat på Django URL-konfiguration och fungerar som en traditionell kontrollant

Django modeller
Django använder Django Models för att representera databastabeller och mappa dem till objekt, till exempel processen kallas ORM. Django Models försöker göra utvecklarens liv enklare genom att abstrahera databaser och mappa objekt och metoder till tabeller och SQL-frågor automatiskt.

Du behöver bara definiera klasser som Django-modeller, och kommer senare att mappas till databastabeller i enlighet med detta. Sedan kan du helt enkelt använda Django Models API för att utföra CRUD på databastabellerna utan att skriva en enda rad SQL

Django utsikt
I Django är en View i huvudsak en Python-funktion. En sådan funktion tar en webbförfrågan och tillämpar den nödvändiga logiken för att generera ett webbsvar, såsom HTML-innehållet på en webbsida, en omdirigering, ett 404-fel, ett XML-dokument, en bild eller något annat webbsvar. View interagerar ofta med Django Models för att få nödvändig data i form av QuerySet eller objekt för att generera ett webbsvar.

Django Application Development Process


Först skapade jag ett Django-projekt som är en behållare för Django-appar och -inställningar. Här kan jag bestämma mig för att skapa och lägga till en eller flera Django-appar till projektet.

I Core Development skapade jag Django-modeller för att modellera data och skapade vyer för att avgöra vilken data som behöver presenteras för UI. Jag mappar också webbadresserna för begäran till våra åsikter så att Django kan vidarebefordra förfrågningar till motsvarande åsikter via webbadresser. Sedan kan vi börja designa och bygga UI.

Dessa filmer fylls i en CSV. Webbplatsen är inte värd för faktiska filmer men det är en rekommendationsmotor som använder vanlig kod och en databas.

Denna rekommendationsmotor använder inte Machine Learning.......ännu 😂😂

För att rekommendationen skulle fungera behövde jag först markera filmerna som en användare har sett med hjälp av Django Admin-webbplatsen. Sedan skrev jag en rekommendationsalgoritm baserad på sedda filmer.

Markera sedda filmer i Django Admin

  • Kör Django Server
  • besök admin url app_url/admin
  • Sedan klickar du på filmposten och markerar den som sett och trycker på Spara.

Kör make_recommendations CMD för att generera rekommendationer

För alla rekommendationssystem är nyckelidén alltid att komma med en bra algoritm/modell för att förutsäga om en specifik användare kommer att gilla eller ogilla hans/hennes osynliga föremål, som visas i följande skärmdump:

Det finns förmodligen hundratals bra rekommendationsalgoritmer och kan grovt delas in i två kategorier:

Innehållsfiltrering baserad:

De innehållsfiltreringsbaserade rekommendationsalgoritmerna antar att du kanske gillar en ny film om du har sett mycket liknande filmer tidigare. Eller baserat på din användarprofil (som ålder, kön, intressen), kommer den att försöka hitta nya filmer som matchar din profil.

Samarbetsfiltrering baserad:

De kollaborativa filtreringsalgoritmerna antar att du kanske gillar en ny film om andra användare som liknar dig (liknande profil eller sett liknande filmer) har sett den här filmen.

I det här projektet kommer vi att använda innehållsfiltreringsbaserad algoritm, och vi kommer att försöka rekommendera osetta/nya filmer till dig om de liknar dina sedda filmer.

Hur beräknar vi en sådan filmlikhet

Här kommer vi att använda Jaccard-likhet som förmodligen är den enklaste men mycket effektiva metoden för att beräkna likhet mellan två uppsättningar.

Jaccard Similarity definieras som storleken på skärningspunkten mellan två uppsättningar dividerat med storleken på föreningen av de två uppsättningarna.


  1. Hur man skapar en riktig en-till-en-relation i SQL Server

  2. Så här fixar du "Procedur förväntar sig parametern '@statement' av typen 'ntext/nchar/nvarchar'." Fel i SQL Server

  3. Hur man genererar testdata i SQL Server

  4. Infogar textsträng med hex i PostgreSQL som en bytea