知行编程网知行编程网  2022-03-09 05:00 知行编程网 隐藏边栏 |   抢沙发  66 
文章评分 0 次,平均分 0.0

这是菜鸟学Python的粉丝第12篇原创投稿

阅读本文大概需要5分钟

本篇作者:小郑同学

     不知道大家平时喜不喜欢看电影来消遣时光,我是比较喜欢看电影的。对我而言,当我看完一部电影,觉得很好看的时候,我就会寻找类似这部电影的其他电影。刚好有这么一个数据集,包含了很多部的电影,于是打算对其进行一波简单的分析并尝试建一个简单的“推荐系统”,一起来看一下吧~~


库:

Pandas,Numpy,Re

工具:

Ipython Notebook

这边插一句,小密圈曾经有一篇文章大家一起讨论了常用的5种Python开发工具,Notebook做数据分析并且记录笔记非常不错!


1.数据集

本文使用的数据集来自于https://grouplens.org/datasets/movielens/,上面有多种版本,主要区别在于数据集的大小(即收录的电影和用户信息的多少),这里使用的是最小的一个数据集:


分析9000部电影|一个简单的电影推荐系统


2.数据初探

数据集里包含了4个文件,本文只用到了其中的两个:电影信息movies.csv,用户对电影的评分ratings.csv,先来看看这两个文件长什么样:


import pandas as pd

movies_data=pd.read_csv('movies.csv')

ratings_data=pd.read_csv('ratings.csv')

print (movies_data)


1).看一下movies_data里的数据


分析9000部电影|一个简单的电影推荐系统


2).看一下用户评分的数据:

分析9000部电影|一个简单的电影推荐系统

显然,如果单纯从单个文件里来分析的话似乎得不到什么有用或者是直观的信息,但是我们可以把这两个数据帧(DataFrame)结合起来,合成新的,把用户评分和电影信息结合起来,方便我们后续的分析处理


3).合并两个数据集

#合并

data=pd.merge(movies_data,ratings_data)

#删除列,可写可不写,不会产生影响

data.drop('timestamp',1,inplace=True)

>>

分析9000部电影|一个简单的电影推荐系统

好了,完成了这一步,我们把重要的信息都结合在一起了,可以开始我们真正的数据分析或探索了,接着看看那些电影收到的评分最多,我们只需一句(value_counts()是我在pandas里最喜欢的一个函数之一)


4).看看评价最多的20名电影

分析9000部电影|一个简单的电影推荐系统


嗯,经典就是经典,评价最多的前几部都是有名的电影(阿甘正传、低俗小说、肖申克的救赎、沉默的羔羊、星球大战……)


看完评价最多的电影,但大多数人更加关心的是电影究竟好不好看,于是乎,我们就把目光转向评分这里. 那接着就来统计下用户对每一部电影的平均评分吧


5).电影的平均评分


分析9000部电影|一个简单的电影推荐系统

其中size是每部电影参评人数,mean是平均分.


6).继续找一下评分最高的top5

分析9000部电影|一个简单的电影推荐系统


咦,我们可以看到,虽然评分是5分,但是……评分只有1人啊,这样绝不是我们想看到的,因为不是很客观,于是,我们再来改进下


这次我们把评价人数大于150人的电影找出来,在进行统计:

movie_ratings[movie_ratings[<span style="color:#a5c261;">'rating'</span>][<span style="color:#a5c261;">'size'</span>]<span style="color:#f92672;">>=</span><span style="color:#ae81ff;">150</span>].<br  />    sort_values([(<span style="color:#a5c261;">'rating'</span><span style="color:#cc7832;">,</span><span style="color:#a5c261;">'mean'</span>)]<span style="color:#cc7832;">,</span><span style="color:#aa4926;">ascending</span><span style="color:#f92672;">=</span><span style="color:#66d9ef;font-style:italic;">False</span>).head()

>>

分析9000部电影|一个简单的电影推荐系统

哈哈哈,这样就客观多了吗,top5分别是:教父、肖申克的救赎、非常嫌疑犯、辛德勒的名单、冰血暴,都是经典电影(大家都看过没有呢)


3.简单的推荐系统

当我们看完一部觉得好看电影,是不是会有这样的感觉,立马看有没有续集,没有的话就会找相似的电影。


是的,这里是基于这样思想,当我们输入一部电影,就找同样的类型的电影,然后返回给我们结果


用代码实现也不多,主要思想是:我们输入电影名或关键词,我们就从数据帧里匹配,然后找到这部电影的类型,再找出与其相同类型的电影,最后返回结果,具体代码为:

分析9000部电影|一个简单的电影推荐系统


>>看看和Toy Story(玩具总动员)类似的动画片有哪些

分析9000部电影|一个简单的电影推荐系统


>>比如找一下星球大战类似的电影:

分析9000部电影|一个简单的电影推荐系统

限于篇幅没有完全截图


结论:来自小郑同学


正如前文刚刚提到过一样,这个数据集还是比较小的,只有九千多条电影记录,当然网站上可以下载更多的数据和更多有趣的信息。另外这个“推荐系统”比较简单,各位小伙伴可以根据自身的要求,再进一步的优化升级,这里就当做是抛砖引玉吧!需要源码:请留言




欢迎大家关注 菜鸟学Python",更多好玩有趣的Python原创教程,趣味算法,经验技巧,行业动态,尽在菜鸟学Python,一起来学python吧


交流经验,分享技巧的小密圈

分析9000部电影|一个简单的电影推荐系统



最佳历史人气文章

Python语言如何入门

最全的零基础学Python的问题,你想知道的都在这里

Python入门原创文章,2016年度大盘点

用Python写个弹球的游戏

Python写个迷你聊天机器人|生成器的高级用法

用Python破解微软面试题|24点游戏

一道Google的算法题 |Python巧妙破解


 长按二维码,关注【菜鸟学python】

分析9000部电影|一个简单的电影推荐系统


来源 | 菜鸟学Python

作者 | xinxin

本文章为菜鸟学Python独家原创稿件,未经授权不得转载


本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享