原创:石晓文 <https://www.jianshu.com/nb/21403842>



1、数据集简介

MovieLens数据集包含多个用户对多部电影的评级数据,也包括电影元数据信息和用户属性信息。

这个数据集经常用来做推荐系统,机器学习算法的测试数据集。尤其在推荐系统领域,很多著名论文都是基于这个数据集的。(PS:
它是某次具有历史意义的推荐系统竞赛所用的数据集)。

下载地址为:http://files.grouplens.org/datasets/movielens/
<https://link.jianshu.com?t=http%3A%2F%2Ffiles.grouplens.org%2Fdatasets%2Fmovielens%2F>
,有好几种版本,对应不同数据量,本文所用的数据为1M的数据。

2、数据介绍


1m的数据解压后,可以看到四个主要的csv文件,分别是links.csv,movies.csv,ratings.csv,tags.csv。links介绍了该数据集中的movieId和imdb、tmdb中电影的对应关系。tags是用户的打标签数据。本文的介绍主要基于ratings.csv
和 movies.csv

ratings数据
文件里面的内容包含了每一个用户对于每一部电影的评分。数据格式如下:
userId, movieId, rating, timestamp
userId: 每个用户的id
movieId: 每部电影的id
rating: 用户评分,是5星制,按半颗星的规模递增(0.5 stars - 5 stars)
timestamp: 自1970年1月1日零点后到用户提交评价的时间的秒数
数据排序的顺序按照userId,movieId排列的。

我们用pandans观察数据的描述及前五行:
ratings = pd.read_csv('../data/ml-1m/ratings.csv',index_col=None)
ratings.describe() ratings.head(5)
输出为:

movies数据
文件里包含了一部电影的id和标题,以及该电影的类别。数据格式如下:
movieId, title, genres
movieId:每部电影的id
title:电影的标题
genres:电影的类别(详细分类见readme.txt)

我们用pandans观察数据的前五行:
movies = pd.read_csv('../data/ml-1m/movies.csv',index_col=None) movies.head(5)
输出为:

合并数据集
我们可以根据movieId来合并两个数据集
data = pd.merge(ratings,movies,on='movieId')
汇总每部电影的评分数量
合并数据集之后,我们可以看一下每部电影的评分数量,并按照降序进行排序:
rating_count_by_movie = data.groupby(['movieId','title'],as_index=False)[
'rating'].count() rating_count_by_movie.columns=['movieId','title',
'rating_count'] rating_count_by_movie.sort_values(by=['rating_count'],ascending=
False,inplace=True) rating_count_by_movie[:10]
输出为:

得到打分的平均值及方差
rating_stddev = data.groupby(['movieId','title']).agg({'rating':['mean','std'
]}) rating_stddev.head(10)
输出为:

本文就先介绍到这里吧!

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信