给定一个包含 N 个用户对 M 部电影评分的矩阵,评分范围为 1 到 5 的整数,未评分用 0 表示。要求对指定的目标用户 U,基于用户协同过滤算法,推荐其尚未评分的电影中最可能喜欢的前 T 部电影。
你是一家视频网站的数据工程师,公司希望为用户提供个性化的电影推荐,以提升用户的观看体验。团队决定采用基于协同过滤的推荐算法,通过分析用户的历史评分数据,找出与目标用户兴趣相似的其他用户,进而推荐他们喜欢的电影。你的任务是编写一个程序,基于用户的评分数据,实现一个简单的用户协同过滤推荐系统。
请你帮助团队实现一个使用NumPy库的程序,基于协同过滤算法为指定用户生成电影推荐列表。具体要求如下: 1.读取输入数据集,包含(N)个用户对(M)部电影的评分矩阵,评分范围为1−5的整数,未评分记为0。
2.读取目标用户的编号(U),对其进行电影推荐。
3.计算用户之间的相似度,使用皮尔逊相关系数(PearsonCorrelationCoefficient)。
4.根据相似度选取前(K)个最相似的用户,默认(K−3)
5.根据相似用户的评分,预测目标用户未评分电影的评分。
输出目标用户最有可能喜欢的前(T)部电影的编号,按照预测评分从高到低排序,若评分相同则按电影编号从小到大排序。
注意: 1.在预测评分时,即使所有相似用户都未对某个电影评分,也不应忽略该电影, 将预测评分设为目标用户的平均评分。 2.在计算相似度时,对于没有共同评分项目的用户,仍需将其相似度设为0,而 非忽略,以免遗漏潜在的相似用户。
皮尔逊相关系数
两个用户(u)和(v)的相似度计算公式为:

其中:
对于目标用户(u)未评分的电影(j),预测评分的计算公式为:

其中:
输入
5 5
5 3 0 1 0
4 0 0 1 0
1 1 0 5 0
0 0 5 4 0
0 0 5 4 0
0
2
输出
2 4