本篇作者:小郑同砚
不知道人人平时喜不喜欢看影戏来消遣时光,我是对照喜欢看影戏的。对我而言,当我看完一部影戏,以为很悦目的时刻,我就会寻找类似这部影戏的其他影戏。恰好有这么一个数据集,包含了很多部的影戏,于是计划对其举行一波简朴的剖析并实验建一个简朴的“推荐系统”,一起来看一下吧~~


Pandas,Numpy,Re
工具:
Ipython Notebook
这边插一句,小密圈曾经有一篇文章人人一起讨论了常用的5种Python开发工具,Notebook做数据剖析而且纪录条记异常不错!

1.数据集


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


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里的数据

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

显然,若是单纯从单个文件里来剖析的话似乎得不到什么有用或者是直观的信息,然则我们可以把这两个数据帧(DataFrame)连系起来,合成新的,把用户评分和影戏信息连系起来,利便我们后续的剖析处置

3).合并两个数据集

#合并
data=pd.merge(movies_data,ratings_data)
#删除列,可写可不写,不会产生影响
data.drop('timestamp',1,inplace=True)
>>


好了,完成了这一步,我们把主要的信息都连系在一起了,可以最先我们真正的数据剖析或探索了,接着看看那些影戏收到的评分最多,我们只需一句(valuecounts()是我在pandas里最喜欢的一个函数之一)

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


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

看完评价最多的影戏,但大多数人加倍体贴的是影戏事实好不悦目,于是乎,我们就把眼光转向评分这里. 那接着就来统计下用户对每一部影戏的平均评分吧

5).影戏的平均评分

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

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

,

以太坊统计网

www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。

,

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

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

movie_ratings[movie_ratings['rating']['size']>=150].\
    sort_values([('rating','mean')],ascending=False).head()


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

3.简朴的推荐系统


当我们看完一部以为悦目影戏,是不是会有这样的感受,立马看有没有续集,没有的话就会找相似的影戏。

是的,这里是基于这样头脑,当我们输入一部影戏,就找同样的类型的影戏,然后返回给我们效果

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

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

好比找一下星球大战类似的影戏:


限于篇幅没有完全截图

结论:来自小郑同砚


正如前文刚刚提到过一样,这个数据集照样对照小的,只有九千多条影戏纪录,固然网站上可以下载更多的数据和更多有趣的信息。另外这个“推荐系统”对照简朴,列位小伙伴可以凭据自身的要求,再进一步的优化升级,这里就当做是抛砖引玉吧!