SQLite
 sql >> Database >  >> RDS >> SQLite

Creazione di un'app di raccomandazione per i film Django utilizzando l'indice Jaccard

I miei obiettivi per questo progetto

  • Comprendi i componenti chiave del framework django
  • Descrivi i principi di base di un sistema di raccomandazione
  • Crea una semplice app per consigli sui film, applicando l'algoritmo di Jaccard basato sul meccanismo di filtraggio dei contenuti

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

Stack tecnologico

  • Backend di Django
  • Front-end HTML
  • Bootstrap CSS
  • Database SQLite

Informazioni su Django Framework

Django suddivide la sua logica applicativa nei seguenti tre componenti Model-View-Controller:

Django Model gestisce la modellazione dei dati e la mappatura del database, nonché la logica di business per elaborare i dati

Django View descrive quali dati vengono presentati, ma non come vengono presentati. In genere, Django View delega ed esegue il rendering di una pagina HTML, che descrive come vengono presentati i dati

Django Template genera pagine HTML dinamiche per presentare i dati

Quando un client invia una richiesta, il server Django instrada la richiesta alla vista appropriata in base alla configurazione dell'URL di Django e agisce come un controller tradizionale

Modelli Django
Django utilizza i modelli Django per rappresentare le tabelle del database e mapparle su oggetti, ad esempio il processo è chiamato ORM. Django Models cerca di semplificare la vita dello sviluppatore astraendo i database e mappando automaticamente oggetti e metodi in tabelle e query SQL.

Devi solo definire le classi come modelli Django e verranno successivamente mappate alle tabelle del database di conseguenza. Quindi puoi semplicemente utilizzare l'API Django Models per eseguire CRUD sulle tabelle del database senza scrivere una singola riga di SQL

Viste di Django
In Django, una vista è essenzialmente una funzione Python. Tale funzione accetta una richiesta Web e applica la logica necessaria per generare una risposta Web, come il contenuto HTML di una pagina Web, un reindirizzamento, un errore 404, un documento XML, un'immagine o qualsiasi altra risposta Web. Spesso, View interagisce con i modelli Django per ottenere i dati richiesti sotto forma di QuerySet o oggetti per generare una risposta Web.

Processo di sviluppo dell'applicazione Django


Innanzitutto, ho creato un progetto Django che è un contenitore per le app e le impostazioni di Django. Qui posso decidere di creare e aggiungere una o più app Django al progetto.

In Core Development, ho creato modelli Django per modellare i dati e creato viste per determinare quali dati devono essere presentati all'interfaccia utente. Mappo anche gli URL delle richieste alle nostre viste in modo che Django possa inoltrare le richieste alle viste corrispondenti tramite gli URL. Quindi possiamo iniziare a progettare e costruire l'interfaccia utente.

Questo film è popolato in un CSV. Il sito non ospita film reali ma è un motore di suggerimenti che utilizza codice normale e un database.

Questo motore di suggerimenti non utilizza Machine Learning.......ancora 😂😂

Per fare in modo che la raccomandazione funzionasse davvero, dovevo prima contrassegnare i film che un utente ha guardato utilizzando il sito di amministrazione di Django. Poi ho scritto un algoritmo di raccomandazione basato sui film visti.

Contrassegnare i film guardati in Django Admin

  • Esegui Django Server
  • visita l'URL dell'amministratore app_url/admin
  • Quindi fai clic sulla voce del film e contrassegnalo come guardato e premi Salva.

Esegui make_recommendations CMD per generare suggerimenti

Per qualsiasi sistema di raccomandazione, l'idea chiave è sempre quella di trovare un buon algoritmo/modello per prevedere se a un utente specifico piacerà o non piacerà il suo oggetto invisibile, come mostrato nella schermata seguente:

Ci sono probabilmente centinaia di buoni algoritmi di raccomandazione e possono essere approssimativamente suddivisi in due categorie:

Basato sul filtro dei contenuti:

Gli algoritmi di raccomandazione basati sul filtro dei contenuti presuppongono che ti possa piacere un nuovo film se hai già visto film molto simili in precedenza. O in base al tuo profilo utente (come età, sesso, interessi), cercherà di trovare nuovi film corrispondenti al tuo profilo.

Basato sul filtro collaborativo:

Gli algoritmi di filtro collaborativo presuppongono che un nuovo film ti possa piacere se altri utenti simili a te (profilo simile o guardato film simili) hanno guardato questo film.

In questo progetto, utilizzeremo un algoritmo basato sul filtro dei contenuti e cercheremo di consigliarti film nuovi/non visti se sono simili ai tuoi film visti.

Come calcoliamo tale somiglianza tra i film

Qui useremo la somiglianza di Jaccard che è probabilmente il metodo più semplice ma molto efficace per calcolare la somiglianza tra due insiemi.

La somiglianza di Jaccard è definita come la dimensione dell'intersezione di due insiemi divisa per la dimensione dell'unione di quei due insiemi.