python|电影打分与推荐

实验内容
编写程序,生成数据模拟(也可以使用真实数据)多人对多个电影的打分(1-5 分), 然后根据这些数据对某用户 A 进行推荐。推荐规则为:在已有数据中选择与该用户 A 的爱 好最相似的用户 B,然后从最相似的用户 B 已看过但用户 A 还没看过的电影中选择用户 B 打 分最高的电影推荐给用户 A。相似度的计算标准为:1)两个用户共同打分过的电影越多, 越相似;2)两个用户对共同打分的电影的打分越接近,越相似。

from random import randrange
data={'user'+str(i):{'film'+str(randrange(1,15)):randrange(1,6)
                     for j in range(randrange(3,10))}
      for i in range(10)}
#当前用户打分数据
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('Know 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('current 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]))
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值