By the end of this lab, you will be able to: - Understand the difference between Content-Based and Collaborative Filtering. - Build a simple recommender system using Python and scikit-learn. - Evaluate recommendations using similarity measures.
-
Python 3.x\
-
Install required libraries:
pip install pandas scikit-learn
We will use a small Movie Dataset with the following structure:
import pandas as pd
# Load dataset
df = pd.read_csv("movies.csv")
print(df.head())user_item_matrix = df.pivot_table(index="user_id", columns="movie_title", values="rating")
print(user_item_matrix)from sklearn.metrics.pairwise import cosine_similarity
# Fill NaN with 0 for similarity calculation
matrix_filled = user_item_matrix.fillna(0)
# Compute similarity between users
similarity = cosine_similarity(matrix_filled)
print("User Similarity Matrix:\n", similarity)# Example: Recommend for user 1 based on most similar user
import numpy as np
user_index = 0 # user_id = 1
similar_users = similarity[user_index]
# Find the most similar user (excluding self)
most_similar_user = np.argsort(similar_users)[-2]
# Get movies rated by most similar user
recommended_movies = user_item_matrix.iloc[most_similar_user].dropna().index.tolist()
print(f"Recommended movies for User 1: {recommended_movies}")- Try Content-Based Filtering using movie genres.\
- Compare results from different approaches.
- Submit your
movies.csvdataset.\ - Upload your Python notebook or
.pyscript with code and results.\ - Write a short reflection on:
- Which method (Content-Based vs Collaborative) worked better?
- What challenges did you face (e.g., missing data, new users/items)?
- Push your code to the GITHUB repositery and atatch the link for submission
- Implement a Hybrid Recommender (combine content + collaborative).\
- Use a larger dataset like MovieLens.