MovieLens 数据集介绍
MovieLens 数据集是由明尼苏达大学的GroupLens研究小组维护的一个广泛使用的电影评分数据集,主要用于推荐系统的研究。该数据集包含用户对电影的评分、标签以及其他相关信息,是电影推荐系统开发与研究的常用数据源。
数据集版本
- • MovieLens 数据集有多个版本,不同版本的数据集规模和内容有所不同:• MovieLens 100k 数据集:包含943位用户对1682部电影的100,000条评分数据,评分范围为1到5分。• MovieLens 1M 数据集:包含1000名用户对3900部电影的100万条评分数据。• MovieLens 10M 数据集:包含71,567名用户对10,681部电影的1000万条评分数据。• MovieLens 20M 数据集:包含138,000名用户对27,000部电影的2000万条评分数据。• MovieLens 25M 数据集:是目前最新发布的版本,包含更多的用户和电影数据。
数据集结构
数据集通常包含以下主要文件:
- 用户信息文件(Users.dat),包含用户的基本信息,如用户ID、性别、年龄、职业等。
- • UserID:用户唯一标识。从1~6040, 代表了6040个MovieLens用户• Gender:性别(M表示男性,F表示女性)。• Age:用户年龄,分成了7组
- • 1: "Under 18"• 18: "18-24"• 25: "25-34"• 35: "35-44"• 45: "45-49"• 50: "50-55"• 56: "56+"
- • 0: "other" or not specified• 1: "academic/educator"• 2: "artist"• 3: "clerical/admin"• 4: "college/grad student"• 5: "customer service"• 6: "doctor/health care"• 7: "executive/managerial"• 8: "farmer"• 9: "homemaker"• 10: "K-12 student"• 11: "lawyer"• 12: "programmer"• 13: "retired"• 14: "sales/marketing"• 15: "scientist"• 16: "self-employed"• 17: "technician/engineer"• 18: "tradesman/craftsman"• 19: "unemployed"• 20: "writer"
- 电影信息文件(Movies.dat),MovieID::Title::Genres。
- • MovieID:电影唯一标识。从1~3952, 代表了3952部电影• Title:电影标题,通常包含电影名称和发行年份。• Genres:电影题材由竖线分开, 包括动作喜剧等18种电影类型,如“Action|Comedy”。
- • Action• Adventure• Animation• Children's• Comedy• Crime• Documentary• Drama• Fantasy• Film-Noir• Horror• Musical• Mystery• Romance• Sci-Fi• Thriller• War• Western
- 评分文件(Ratings.dat),UserID::MovieID::Rating::Timestamp
- • UserID:用户唯一标识。• MovieID:电影唯一标识。• Rating:用户对电影的评分,通常为1到5的整数。• Timestamp:评分的时间戳,表示自1970年1月1日以来的秒数。
- 标签文件(Tags.dat)包含用户为电影添加的标签。
- • UserID:用户唯一标识。• MovieID:电影唯一标识。• Tag:用户为电影添加的标签内容。• Timestamp:标签添加的时间戳。
数据集下载
files.grouplens.org/datasets/mo…
grouplens.org/datasets/mo…
数据集解析
以下是一个基于Python和Pandas库的MovieLens数据集解析代码示例,适用于常见的MovieLens数据集(如ml-100k或ml-1m):
import pandas as pduser_file = 'users.dat' movie_file = 'movies.dat' rating_file = 'ratings.dat' user_columns = ['user_id', 'gender', 'age', 'occupation', 'zip']movie_columns = ['movie_id', 'title', 'genres']rating_columns = ['user_id', 'movie_id', 'rating', 'timestamp']user_df = pd.read_csv(user_file, sep='::', header=None, names=user_columns, engine='python')movie_df = pd.read_csv(movie_file, sep='::', header=None, names=movie_columns, engine='python', encoding='ISO-8859-1')rating_df = pd.read_csv(rating_file, sep='::', header=None, names=rating_columns, engine='python')print("用户数据前几行:")print(user_df.head())print("\n电影数据前几行:")print(movie_df.head())print("\n评分数据前几行:")print(rating_df.head())