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

其中:
- 为用户和都评分过的电影集合。
- 为用户对电影的评分。
- ()为用户的平均评分。
- 评分预测
对于目标用户未评分的电影,预测评分的计算公式为:

其中:
- 为与用户最相似的前个用户集合。
- 为用户对电影的评分。
样例1
输入
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
说明
- 目标用户为编号的用户
- 计算用户之间的相似度,找到与目标用户最相似的个用户。
- 预测目标用户未评分的电影和的评分。
- 推荐评分最高的前部电影,分别是电影编号和。