10.6:实战案例

电影评分数据

本次使用电影评分数据为672个用户对9123部电影的评分记录,部分数据如下:

userId movieRow rating
1 30 2.5
7 30 3
31 30 4
32 30 4

其中:

userId:用户编号
movieRow:电影编号
rating:评分值

如:

  • 第一行数据表示用户1对电影30评分为2.5分。
  • 第二行数据表示用户7对电影30评分为3分。

然后,我们还有电影编号与电影名字对应的数据如下:

movieRow title
0 Toy Story (1995)
1 Jumanji (1995)
2 Grumpier Old Men (1995)
3 Waiting to Exhale (1995)

其中:

movieRow:电影编号
title:电影名称

数据下载连接 提取码:ve3v

构造用户-电影评分矩阵

大家已经知道,要使用基于矩阵分解的协同过滤算法,首先得有用户与电影评分的矩阵,而我们实际中的数据并不是以这样的形式保存,所以在使用算法前要先构造出用户-电影评分矩阵,python实现代码如下:

import numpy as np
#获取用户数与电影数
userNo = max(ratings_df['userId'])+1
movieNo = max(ratings_df['movieRow'])+1

#创建电影评分表
rating = np.zeros((userNo,movieNo))
for index,row in ratings_df.iterrows():
    rating[int(row['userId']),int(row['movieRow'])]=row['rating']

构造出表格后,我们就能使用上一关实现的方法来对用户进行电影推荐了:

recommend(1,1e-4,0.999,20,100,rating)
>>>
为用户1推荐的电影为:
1:Rumble Fish (1983)
2:Aquamarine (2006)
3:Stay Alive (2006)
4:Betrayal, The (Nerakhoon) (2008)
5:Midnight Express (1978)。

recommend(666,1e-4,0.999,20,100,rating) 
>>>
为用户666推荐的电影为:
1:Aquamarine (2006)
2:It's a Boy Girl Thing (2006)
3:Kill the Messenger (2014)
4:Onion Field, The (1979)
5:Wind Rises, The (Kaze tachinu) (2013)。

recommend(555,1e-4,0.999,20,100,rating) 
>>>
为用户555推荐的电影为:
1:Return from Witch Mountain (1978)
2:Hitcher, The (2007)
3:Betrayal, The (Nerakhoon) (2008)
4:Listen to Me Marlon (2015)
5:World of Tomorrow (2015)。

recommend(88,1e-4,0.999,20,100,rating) 
>>>
为用户88推荐的电影为:
1:Now, Voyager (1942)
2:Betrayal, The (Nerakhoon) (2008)
3:Aquamarine (2006)
4:Post Grad (2009)
5:Hitcher, The (2007)

results matching ""

    No results matching ""