# add your imports here
# here are some examples of imports
import matplotlib.pyplot as plt # for plotting
import numpy as np # for simulating random choices
from collections import Counter # for aggregating the results
In the following exercises, we will run simulations of a recommender system that recommends
movies to users, as we discussed in class on 9/23, and in this Piazza post:
Step 1: Baseline Movie Ratings
We will start by generating baseline star-ratings to movies. We assume there are movies in the
system, and their ratings are distributed uniformly between 1.0 stars (terrible) and 5.0 stars
k = 10000
movies = np.random.uniform(1.0, 5.0, k)
[2.60119723 2.35860193 1.80319649 … 4.439829 4.32918526 2.44776013]
Exercise 1: Simulating User Populations
In this exercise, we ask you to now simulate ratings from two user different populations.
User population 1 consists of random movie-watchers. They pick movies completely at random,
without regard to the underlying rating. After watching movie i with rating ri , they then
generate a user rating
where δ is uniform on [-1.0, 1.0]
and constrain that rating to be in the valid range [1.0, 5.0]
u = max(1.0, u) # round up to 1.0 if needed
u = min(5.0, u) # round down to 5.0 if needed
A rating is recorded as the tuple (i, u).
Produce a list of 50,000 ratings produced by user population 1 and report the average rating the
users generated as average1.
User population 2 consists of more discriminating users. They choose movies proportionally to
the underlying rating using the following selection probabilities:
They then generate a user rating using the same method as user population 1, except their δ is
uniform on [-0.5, 0.5].
Produce a list of 50,000 ratings produced by user population 2 and report the average rating the
users generated as average2.
[Hint: Implementation time-saver: consider using the numpy function random.choice() to
implement selections for User population 2]
# Your code here to compute average1 and average2
本网站支持 Alipay WeChatPay PayPal等支付方式
E-mail: firstname.lastname@example.org 微信号:vipnxx