推荐系统Python代码实现
协同过滤推荐系统在我们的⽇常⽣活之中⽆处不在,例如,在电⼦商城购物,系统会根据⽤户的记录或者其他的
信息来推荐相应的产品给客户,是⼀种智能的⽣活⽅式。之所以交协同过滤,是因为在实现过滤推荐的时候是根据
其他⼈的⾏为来做预测的,基于相似⽤户的喜好来实现⽤户的喜好预测。
简要介绍:
通过到兴趣相投,或者有共同经验的体,来向⽤户推荐感兴趣的信息。
举例,如何协同过滤,来对⽤户A进⾏电影推荐?
答:简要步骤如下
到⽤户A(user_id_1)的兴趣爱好
到与⽤户A(user_id_1)具有相同电影兴趣爱好的⽤户体集合Set<user_id>
到该体喜欢的电影集合Set<movie_id>
将这些电影Set<Movie_id>推荐给⽤户A(user_id_1)
具体实施步骤如何?
答:简要步骤如下
(1)画⼀个⼤表格,横坐标是所有的movie_id,纵坐标所有的user_id,交叉处代表这个⽤户喜爱这部电影
Move_id_1Move_id_2Move_id_3Move_id_4Move_id_5……Move_id_110w User_id_1111
User_id_21111
User_id_31111
………….
………….
User_id_10w111
如上表:
横坐标,假设有10w部电影,所以横坐标有10w个movie_id,数据来源⾃数据库
纵坐标,假设有100w个⽤户,所以纵坐标有100w个user_id,数据也来⾃数据库
交叉处,“1”代表⽤户喜爱这部电影,数据来⾃⽇志
画外⾳:什么是“喜欢”,需要⼈为定义,例如浏览过,查过,点赞过,反正⽇志⾥有这些数据(2)到⽤户A(user_id_1)的兴趣爱好
如上表,可以看到,⽤户A喜欢电影{m1, m2, m3}
(3)到与⽤户A(user_id_1)具有相同电影兴趣爱好的⽤户体集合Set<user_id>
如上表,可以看到,喜欢{m1, m2, m3}的⽤户,除了u1,还有{u2, u3}
(4)到该体喜欢的电影集合Set<movie_id>
如上表,具备相同喜好的⽤户⾥{u2, u3},还喜好的电影集合是{m4, m5}
画外⾳:“协同”就体现在这⾥。
(5)未来⽤户A(use_id_1)来访问⽹站时,要推荐电影{m4, m5}给ta。
具体实现步骤:
第⼀步:计算两者之间的相似度
通常会先把⼆维表格绘制在⼀个图中总,每个⽤户数据表⽰⼀个点。
度量相似度计算的⽅法:a.曼哈顿距离计算(计算迅速,节省时间)
b.欧⽒距离计算(计算两个点之间的直线距离)
数据预处理:
或者
解压读取movies.csv和ratings.csv⽂件
两个⽂件的数据格式如下:
python怎么读取py文件
1.
通过如下程序提取数据:2.
3.
#!/usr/bin/env python 4.
# encoding: utf-8
5.
"""
6.
@Company:华中科技⼤学电⽓学院聚变与等离⼦研究所
7.
@version: V1.0
8.
@author: YEXIN
9.
@contact: 1650996069@qq or yexin@hust.edu 2018--2020