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

阿汤哥的碟中谍系列一直是我的最爱,惊险刺激,场面火爆。最近碟中谍6更是全面上映,一路从地上打到天上,尤其最后两架直升机追逐的场面非常好看!看完之后不过瘾,想想还有啥有类似碟中谍的好看的电影,不如我们用万能的Python+机器学习里的协同过滤的算法来写一个电影推荐系统

碟中谍这么火,我用机器学习做个迷你推荐系统电影

 

 

01.准备数据集

机器学习离不开数据集,我们必须要有一些数据喂给机器学习,训练模型之后才能让算法运行起来,这里我们准备了两份数据集:

1).电影数据

我们准备了一份有1682份数据的电影集:

碟中谍这么火,我用机器学习做个迷你推荐系统电影

1682行,3列数据,其实有电影的id,电影的名字和电影上映的日期

 

2).用户点评数据10000条

这里我们拿到了有10000名用户电影评分的数据,从movielen网上获得!这样的数据集kaggle上也有很多。为了简单期间,我们只选择其中的4列特征数据作为分析(用户的id,电影的id,评分等级和时间):

碟中谍这么火,我用机器学习做个迷你推荐系统电影

10000行,4列数据,大家看一些时间戳,这个时间戳用time.localtime换算一下,发现大部分都是2000年左右的点评数据,数据集稍微有点旧,但是对我们练手一个小的推荐系统足以!

 

3).读取数据集

先把两份文件的数据读到内存里面,这当然是用pandas来做数据读取。

碟中谍这么火,我用机器学习做个迷你推荐系统电影

 

 

02.协同过滤算法

 

协同过滤方法可以分为两个主要部分,基于用户协同过滤和产品-产品协同过滤。一个基于用户协同过滤将选取一个特定的用户,基于打分的相似性发现类似于该用户的用户,并推荐那些相似用户喜欢的产品。

 

简单来说,就是:

  • 基于用户协同过滤: “喜欢这个东西的人也喜欢……”
  • 基于产品协同过滤: “像你一样的人也喜欢……” 

 

其中有一个关键点,就是计算相似度。这里将要用到的方法是余弦相似度,类似的还有欧几里得距离,曼哈顿距离等等来衡量两者之间的距离(相似性)。但在这里,协同过滤用余弦相似度要更好,也更合理。

 

1).构造用户-电影矩阵

碟中谍这么火,我用机器学习做个迷你推荐系统电影

输出的矩阵,看起来就是我们想要的,每一行代表一个用户,每一列代表一部电影,矩阵元素则是评分。那接下来就可以进行第二步了——相似度计算。

2).相似度计算

sklearn应该是用的非常多的机器学习库,里面内置了大量的成熟的库,非常方面,这里我们导入余弦相似度cosine_similarity库。

碟中谍这么火,我用机器学习做个迷你推荐系统电影

到这里,已经获得了电影的相似度矩阵了。这里有个小细节,在计算时我用了矩阵转置,为什么呢?因为现在是计算电影相似度,不转置的话计算的是用户的相似性!所以这里要注意一下转置。

03.写一个小推荐系统应用程序

既然核心的两部分我们都求出来了,下面编写一个应用小程序,希望的功能如下:

利用电影间的相似程度,当我们输入一部电影的片名(不需要全部)可以返回想要的推荐个数,分别是什么,有多少用户评分,得分多少。

1).迷你推荐系统

因为前面有的了矩阵和相识度,其实我们只需要获取电影的名字和推荐的个数,查表即可,然后把结果保存到movie_list

碟中谍这么火,我用机器学习做个迷你推荐系统电影

2).获取用户的输入

我们写一个小程序来获取用户想推荐的电影,比如现在用户看了碟中谍,想再推荐5部类似的电影:

碟中谍这么火,我用机器学习做个迷你推荐系统电影

按完回车之后我们可以得到一个推荐电影列表:

碟中谍这么火,我用机器学习做个迷你推荐系统电影

跟碟中谍类似的电影有:

  • 独立日 Independence Day

  • 勇闯夺命岛 The Rock

  • 龙卷风 Twister

  • 蒸发密令 Eraser

  • 断箭 Broken Arrow

 

还是蛮准的,至少推荐的几部确实对我胃口,当然你也可以询问相似度的阈值,得到更精准的推送!

 

碟中谍这么火,我用机器学习做个迷你推荐系统电影

人工智能已经慢慢的侵入我们的生活,在海量的大数据面前,机器通过各种算法的学习和训练变的越来越聪明。这样的推荐系统,尤其是协同过滤算法在很大电商网站上都经常使用!其实整个这个小程序代码量很小,有兴趣的同学可以试试!

需要本篇源码和数据集练手,请找小助手!

 

Python就是这么有趣好玩

另外发现很多同学有入门的问题,到处找资料,现在关注码题达人小助手,我会送一些我自己精选的入门的资料,有兴趣的可以关注,非诚勿扰!

往期精彩:

用Python开发一个迷你打飞机的游戏

太好玩了!用Python写个弹球游戏2.0

给小白的礼物,菜鸟学Python入门教程大盘点

熬了一晚上,小白用Python写了一个股票提醒系统

酷毙了!用Python来段疯狂的抖音舞

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

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

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

发表评论

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