2dv515-a1-recommendation-system Svelte Themes

2dv515 A1 Recommendation System

Recommendation system: FastAPI + Svelte, collaborative filtering with Pandas

A1 - Recommendation System

Setup and Running

Backend Setup

  1. Navigate to backend directory:

    cd backend
    
  2. Create and activate virtual environment:

    python3 -m venv venv
    source venv/bin/activate
    
  3. Install dependencies:

    pip install -r requirements.txt
    
  4. Run the backend server:

    uvicorn app.main:app --reload --port 8000
    

Backend API will be available at http://localhost:8000

Frontend Setup

  1. Navigate to frontend directory:

    cd frontend
    
  2. Install dependencies:

    npm install
    
  3. Run the development server:

    npm run dev
    

Frontend will be available at http://localhost:5173

Datasets

The datasets are located in backend/data/:

  • movies_example/ - Small example dataset for testing
  • movies_large/ - Larger dataset for production use

Each dataset contains:

  • users.csv - User IDs and names
  • movies.csv - Movie IDs, titles, and years
  • ratings.csv - User ratings for movies

Implementation

Backend (Python + FastAPI)

  • Data Loader (backend/app/data_loader.py) - Loads and parses CSV files
  • Similarity Functions (backend/app/similarity.py) - Euclidean distance and Pearson correlation
  • Recommender (backend/app/recommender.py) - Generates recommendations using collaborative filtering
  • API (backend/app/main.py) - REST endpoints for frontend communication

Frontend (Svelte)

  • API Client (frontend/src/lib/api.js) - Communicates with backend
  • App (frontend/src/App.svelte) - Main application component
  • Controls (frontend/src/lib/Controls.svelte) - User and algorithm selection
  • SimilarUsers (frontend/src/lib/SimilarUsers.svelte) - Displays similar users
  • MovieRecommendations (frontend/src/lib/MovieRecommendations.svelte) - Displays movie recommendations

API Endpoints

  • GET /api/users?dataset=movies_example - List all users
  • GET /api/recommendations?user=Mike&algorithm=euclidean&dataset=movies_example - Get movie recommendations
  • GET /api/similar-users?user=Mike&algorithm=euclidean&dataset=movies_example - Get similar users

Top categories

Loading Svelte Themes