推荐系统--MovieLens数据集

推荐系统–MovieLens数据集

简介

MovieLens 数据集是由 GroupLens 项目组制作的公开数据集。MoveieLens数据集可以说是推荐系统领域最为经典的数据集之一,其地位类似计算机视觉领域里的MNIST数据集。

MovieLens数据集

MovieLens 是一系列数据集的统称。根据创建时间、数据集大小等划分为若干个子数据集。例如:

  • MovieLens 100K Dataset
  • MovieLens 1M Dataset
  • MovieLens 10M Dataset
  • MovieLens 20M Dataset

每个数据集都可以在官网进行下载。

数据集详情

我们以 MovieLens 1M Dataset 为例进行分析。

首先,我们下载 MovieLens 1M Dataset 后得到压缩包 ml-1m.zip。对其进行接下后可以得到四个文件:

  • movies.dat
  • ratings.dat
  • user.dat
  • README

README

README 文件中描述了数据集的相关信息,有兴趣的同学可以自行查阅。我们主要关注另外三个文件的内容和格式。

ratings.dat

ratings.dat 文件里面的内容包含了每一个用户对于每一部电影的评分。打开文件,我们可以看到以下内容 (我们仅展示一部分):

1::1193::5::978300760
1::661::3::978302109
1::914::3::978301968
1::3408::4::978300275
1::2355::5::978824291
1::1197::3::978302268
1::1287::5::978302039
1::2804::5::978300719

内容的描述格式为:UserID::MovieID::Rating::Timestamp

  • UserID 表示用户编号,范围从 1 到 6040
  • MovieID 表示电影编号,范围从 1 到 3952
  • Rating 表示用户对电影的评级,范围是 1 到 5,都是整数
  • Timestamp 表示时间戳,以秒为单位

注意: 每个用户至少会对 20 部电影进行评级。

users.dat

users.data 描述了用户的信息。我们展示文件的部分行。

1::F::1::10::48067
2::M::56::16::70072
3::M::25::15::55117
4::M::45::7::02460
5::M::25::20::55455
6::F::50::9::55117
7::M::35::1::06810
8::M::25::12::11413

内容的描述格式为:UserID::Gender::Age::Occupation::Zip-code

  • UserID 表示用户编号,范围从 1 到 6040

  • Gender 'M’代表男性,'F’代表女性

  • Age 表示用户年龄

    • 1: 18岁以下
    • 18: 18~24岁
    • 25: 25~34岁
    • 35: 35~44岁
    • 45: 45~49岁
    • 50: 50~55岁
    • 56:56岁以上
  • Occupation 表示用户的职业

    • 0:其他或者未指定
    • 1: 学者/教育行业
    • 2:艺术家
    • 3: 办事员/行政人员
    • 4: 大学生/研究生
    • 5:服务业
    • 6:医疗医护业
    • 7:执行官/管理者
    • 8:农民
    • 9:家庭主妇
    • 10:中小学生
    • 11:律师
    • 12:程序员
    • 13:退休人员
    • 14:销售人员/市场人员
    • 15:科学家
    • 16:自主创业
    • 17:技术人员/工程师
    • 18:商人/手工工作者
    • 19:失业
    • 20:作家
  • Zip-dode 表示用户所在地的邮政编码

movies.dat

movies.dat 文件中描述了电影的详细信息,我们展示部分内容。

1::Toy Story (1995)::Animation|Children's|Comedy
2::Jumanji (1995)::Adventure|Children's|Fantasy
3::Grumpier Old Men (1995)::Comedy|Romance
4::Waiting to Exhale (1995)::Comedy|Drama
5::Father of the Bride Part II (1995)::Comedy
6::Heat (1995)::Action|Crime|Thriller
7::Sabrina (1995)::Comedy|Romance
8::Tom and Huck (1995)::Adventure|Children's

内容的描述格式为:MovieID::Title::Genres

  • MovieID 表示电影编号,范围从 1 到 3952
  • Title 表示电影名称,由IMDB提供,且包括发行年份
  • Genres 表示电影题材,多种题材之间用 | 隔开,共包含以下题材
    • Action
    • Adventure
    • Animation
    • Children’s
    • Comedy
    • Crime
    • Documentary
    • Drama
    • Fantasy
    • Film-Noir
    • Horror
    • Musical
    • Mystery
    • Romance
    • Sci-Fi
    • Thriller
    • War Western

数据的加载

我们使用 pandas 加载数据

import pandas as pd

def get_data(root_path):
    # 读取数据--并重新定义列名
    col_names = ['user_id','movie_id','rating','timestamp'] 
    ratings = pd.read_csv(os.path.join(root_path, 'ratings.dat'), sep='::', engine='python', names=col_names)
    # 打印出前几行数据
    print(ratings[0:5])
    """
		   user_id  movie_id  rating  timestamp
		0        1      1193       5  978300760
		1        1       661       3  978302109
		2        1       914       3  978301968
		3        1      3408       4  978300275
		4        1      2355       5  978824291
	"""
    col_names = ["user_id", "gender", "age", "occupation", "zip_code"]
    users = pd.read_csv(os.path.join(root_path, 'users.dat'), sep='::', engine='python', names=col_names)
    print(users[:5])
	 """
	     	user_id gender  age  occupation zip_code
		0        1      F    1          10    48067
		1        2      M   56          16    70072
		2        3      M   25          15    55117
		3        4      M   45           7    02460
		4        5      M   25          20    55455
	"""
    col_names = ["movie_id", "title", "genres"]
    movies = pd.read_csv(os.path.join(root_path, 'movies.dat'), sep='::', engine='python', names=col_names)
    print(movies[:5])
     """
  		   movie_id                               title                        genres
		0         1                    Toy Story (1995)   Animation|Children's|Comedy
		1         2                      Jumanji (1995)  Adventure|Children's|Fantasy
		2         3             Grumpier Old Men (1995)                Comedy|Romance
		3         4            Waiting to Exhale (1995)                  Comedy|Drama
		4         5  Father of the Bride Part II (1995)                        Comedy
	"""
    return ratings, users, movies

if __name__ == "__main__":
    root_path = './data/ml-1m/'
    get_data(root_path)

你可能感兴趣的:(推荐系统,数据挖掘,机器学习,推荐算法)