假设已有若干用户名字及其喜欢的电影清单,现有某用户,已看过并喜欢一些电影,现在想找个新电影看看,又不知道看什么好。写一个简单的Python程序来帮助他。
时间: 2024-09-30 16:03:55 浏览: 59
一个简单的协同过滤推荐系统的Python示例,使用了一个假设的电影-用户评分矩阵
为了编写一个简单的Python程序帮助这位用户推荐电影,我们可以利用一个数据结构,比如字典,存储每个用户的姓名、喜欢的电影列表以及他们对每部电影的好感度(如评分或标记)。这里我们假设好感度越高表示越喜欢。下面是一个简化的示例:
```python
class User:
def __init__(self, name):
self.name = name
# 喜欢的电影字典,电影名作为键,喜好程度作为值
self.favorite_movies = {}
def recommend_movie(user, all_movies):
user_rating = user.favorite_movies.values() # 用户所有喜欢电影的总好评度
most_popular = max(all_movies, key=all_movies.get) # 所有电影中评分最高的
if user_rating: # 如果用户有评分记录
similarity = sum(user_rating) / len(user_rating) # 计算用户平均喜好度
if all_movies[most_popular] > similarity: # 推荐评分超过平均喜好的电影
return most_popular
else: # 对于无评级用户,随机选择热门电影
return most_popular
# 示例数据
users = {
"Alice": {"Inception": 4.5, "The Shawshank Redemption": 4.0},
"Bob": {"Avengers": 3.8, "Pulp Fiction": 4.2}
}
all_movies = {
"Inception": 4.8,
"The Shawshank Redemption": 4.9,
"Avengers": 4.5,
"Pulp Fiction": 4.7,
"Matrix": 4.6
}
user = "Bob" # 想要推荐的用户
new_movie = recommend_movie(users[user], all_movies)
print(f"For user {user}, we recommend the movie '{new_movie}'.")
```
阅读全文