今天闲着无聊,想找点电影看,上豆瓣找了好久,很烦,一点都不知道选什么电影比较好,因为我也尝试过去豆瓣top250里面找,但是可能是口味不和的缘故,即使评分很高我也看不下去,一来二去就浪费了很多时间,于是就想着写一个电影推荐系统,把豆瓣上的电影评分信息爬下来,经过一些算法的处理来得出一些符合我口味的电影。
下面我讲一下具体实现的思路:
第一步:我需要把电影评分信息爬下来。
为了找到真实活跃用户的评分信息,我把芳华的热门影评中的前100个人的信息爬了下来。
芳华评论
最终返回的结果是类似https://www.douban.com/people/tjz230/这种链接的集合,总共100个。
接下来,我会在链接的后面加上"collect?start=0&sort=time&rating=all&filter=all&mode=grid"来进入他全部电影的评分界面。
全部电影评分
接着我把他看过的电影,有评分的,按时间排序,爬前90部电影评分下来,当然如果他没有看过90部电影就不爬那么多。
这一步完成后,我获得了电影评分数据。
第二步:再有了数据集之后,接下来可以寻找与我品味相似的观众了。(自己的对电影的评分数据也要有)。
这里我利用的是皮尔逊相似度来计算两个人的相似度
皮尔逊相关度
第三步:有了相似度之后,就可以进行电影的推荐了,啊哈哈!下面是对我电影推荐的结果:
我把我所有的代码都放在了我的github上,大家可以过去下载使用:https://github.com/xyy55/Python/tree/master/python3/DataMining
get_movie_data.py是用来获取数据集的,在获取完数据后会在同一个文件夹下生成一个movie.json文件。
get_personal_hobby.py是用来获取自己在豆瓣的评分信息的,大家用的时候先把代码里面的people_name赋值为自己的id,找不到自己的id的话可以打开自己豆瓣的主页,地址栏那里跟在/people/后面的便是你自己的id,如果想要推荐的精确度高的话要多多评分哦!
make_recommendation.py这个文件是做推荐用的,同样也要把代码里面的people_name修改为自己的id,运行结束后会输出前20个推荐的电影
update_data.py是更新数据集的,为了推荐的准确度啦,久不久就运行一遍就行。
如果大家觉得有用的话可以给个热心啦!
有什么疑问或建议的可以回复告诉我。
|