利用 Python 分析 MovieLens 1M 数据集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用 Python 分析 MovieLens 1M 数据集相关的知识,希望对你有一定的参考价值。

参考技术A MovieLens数据集是一个关于电影评分的数据集,里面包含了从IMDB, The Movie DataBase上面得到的用户对电影的评分信息,详细请看下面的介绍。

文件里面的内容是帮助你如何通过网站id在对应网站上找到对应的电影链接的。

movieId, imdbId, tmdbId

表示这部电影在movielens上的id,可以通过链接 https://movielens.org/movies/(movieId) 来得到。

表示这部电影在imdb上的id,可以通过链接 http://www.imdb.com/title/(imdbId)/
来得到。

movieId, title, genres

文件里包含了一部电影的id和标题,以及该电影的类别

movieId, title, genres

每部电影的id

电影的标题

电影的类别(详细分类见readme.txt)

文件里面的内容包含了每一个用户对于每一部电影的评分。

数据排序的顺序按照userId,movieId排列的。

文件里面的内容包含了每一个用户对于每一个电影的分类

数据排序的顺序按照userId,movieId排列的。

=======

该数据集(ml-latest-small)描述了电影推荐服务[MovieLens]( http://movielens.org )的5星评级和自由文本标记活动。它包含9742部电影的100836个评级和3683个标签应用程序。这些数据由610位用户在1996年3月29日到2018年9月24日之间创建。该数据集于2018年9月26日生成。

随机选择用户以包含在内。所有选定的用户评分至少20部电影。不包括人口统计信息。每个用户都由一个id表示,并且不提供其他信息。

数据包含在 links.csv , movies.csv , ratings.csv 和 tags.csv 文件中。有关所有这些文件的内容和用法的更多详细信息如下。

这是一个发展的数据集。因此,它可能会随着时间的推移而发生变化,并不是共享研究结果的适当数据集。

========

要确认在出版物中使用数据集,请引用以下文件:

========================

数据集文件以[逗号分隔值]文件写入,并带有单个标题行。包含逗号( , )的列使用双引号(```)进行转义。这些文件编码为UTF-8。如果电影标题或标签值中的重音字符(例如Misérables,Les(1995))显示不正确,确保读取数据的任何程序(如文本编辑器,终端或脚本)都配置为UTF-8。

MovieLens用户随机选择包含。他们的ID已经匿名化了。用户ID在 ratings.csv 和 tags.csv 之间是一致的(即,相同的id指的是两个文件中的同一用户)。

数据集中仅包含至少具有一个评级或标记的电影。这些电影ID与MovieLens网站上使用的电影ID一致(例如,id 1 对应于URL https://movielens.org/movies/1 )。电影ID在 ratings.csv , tags.csv , movies.csv 和 links.csv 之间是一致的.

通过[pandas.read_csv]将各表转化为pandas 的DataFrame对象

其中用到的参数为分隔符sep、头文件header、列名定义names、解析器引擎engine
这里和书上相比多用了engine参数,engine参数有C和Python,C引擎速度更快,而Python引擎目前功能更完整。

可用pandas.merge 将所有数据都合并到一个表中。merge有四种连接方式(默认为inner),分别为

通过索引器查看第一行数据,使用基于标签的索引.loc或基于位置的索引.iloc

可通过数据透视表( pivot_table )实现

该操作产生了另一个DataFrame,输出内容为rating列的数据,行标index为电影名称,列标为性别,aggfunc参数为函数或函数列表(默认为numpy.mean),其中“columns”提供了一种额外的方法来分割数据。

by参数的作用是针对特定的列进行排序(不能对行使用),ascending的作用是确定排序方式,默认为升序

增加一列存放平均得分之差,并对其排序,得到分歧最大且女性观众更喜欢的电影

按照电影标题将数据集分为不同的groups,并且用size( )函数得到每部电影的个数(即每部电影被评论的次数),按照从大到小排序,取最大的前20部电影列出如下

按照电影名称分组,用agg函数通过一个字典‘rating’: [np.size, np.mean]来按照key即rating这一列聚合,查看每一部电影被评论过的次数和被打的平均分。取出至少被评论过100次的电影按照平均评分从大到小排序,取最大的10部电影。

以上是关于利用 Python 分析 MovieLens 1M 数据集的主要内容,如果未能解决你的问题,请参考以下文章

--MovieLens 1M数据集

《Python For Data Analysis》学习笔记-1

Python for Data Analysis | MovieLens

推荐算法的Python实现——MF(矩阵分解)

推荐算法的Python实现——MF(矩阵分解)

推荐算法的Python实现——MF(矩阵分解) 基于TensorFlow