python 推荐与该用户喜欢的电影类型相同的电影

本文介绍了一个基于用户历史评分数据的电影推荐系统实现方法。通过计算用户间的相似度,找到与目标用户兴趣最为接近的用户,并依据该用户的评分记录来为目标用户推荐未观看过的高分电影。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设已有大量用户对若干电影的评分数据,现有某用户,也看过一些电影并进行过评分,要求根据已有打分数据为该用户进行精准推荐。要求尽量推荐与该用户喜欢的电影类型相同的电影(或者说,根据与该用户爱好最相似的用户打分数据进行推荐),如果有多个可能的电影,则推荐打分最高的电影。

from random import randrange

#历史电影打分数据,一个10个用户,每个用户对3到9个电影进行评分
#每个电影的评分最低1分,最高5分,这里是字典推导式和集合推导式的用法
data= {'user'+str(i):{'film'+str(randrange(1,15)):randrange(1,6) 
                      for j in range(randrange(3,10))} 
       for i in range(10)}    

#模拟当前用户打分数据,为5部随机电影打分
user={'film'+str(randrange(1,15)):randrange(1,6) for i in range(5)}


# 最相似的用户及其对电影的打分情况
# 两个用户共同打分的电影最多
# 并且所有电影的打分差值最小
f = lambda item:(-len(item[1].keys()&user),
              sum(((item[1].get(film)-user.get(film))**2
                   for film in user.keys()&item[1].keys())))
similarUser,films= min(data.items() , key=f)

# 在输出结果中,第一列表示两个人共同打分的电影的数量
# 第二列表示两人打分之间的相似度,数字越小表示越相似
# 然后是该用户对电影的打分数据
print('known data'.center(50,'='))
for item in data.items():
    print(len(item[1].keys()&user.keys()),
        sum(((item[1].get(film)-user.get(film))**2
             for film in user.keys()&item[1].keys())),
        item,
        sep=':')
print('curren user'.center(50,'='))
print(user)
print('most similar user and his films'.center(50,'='))
print(similarUser,films,sep=':')
print('recommended film'.center(50,'='))

# 在当前用户没看过的电影中选择打分最高的进行推荐
print(max(films.keys()-user.keys(), key=lambda film : films[film])) 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44322234

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值