基于k近邻的User_CF协同过滤推荐算法

     下面就是基于k近邻的User_CF协同过滤推荐算法的完整代码,通过该代码,我们求出了每个用户的最相近的k个邻居,然后将这k个邻居观看的电影列表依次和该用户的电影列表做并集,就得到了该用户的推荐列表。代码有很多个函数块组成,下面依次对每个函数块展开解释:

readDatas():

读取数据,只取出前两列(用户id和电影id)将user_dict映射成一个字典,字典中的关键词即用户id,字典列表即为电影列表

getTrainsetAndTestset(dct):

得到训练数据和测试数据,在取出测试数据的时候,我们采取随机的方式,取出随机的20%的数据作为测试集,其余即为训练集,数学公式math.ceil需要注意啦

knn(trainset,k):

计算k近邻,就是便利训练集中的所有用户,然后将所有用户两两计算预先相速度,再按照他们的相似度降序排序,取出最大的k个,并且将每个用户u1的k近邻存在user_sims[u1]里面

get_recommendations(user_sims,o_set):

得到推荐列表,将k个邻居观看的电影列表依次和该用户的电影列表做并集,就得到了该用户的推荐列表

precisionAndRecall(pre,test):

计算准确度和召回率,预测的电影和真实的电影取个交集,然后计算准确度和召回率

   

# 开发时间:2021/11/25 9:55
import  pandas as pd
import random
import math
from tqdm import tqdm
def readDatas():
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值