python文件中引入某个数据包命令_用python写一个载入和处理Movielens数据的示例程序...

本文提供了一个使用Python加载和处理 Movielens 数据集的示例程序。通过读取数据包中的文件,创建电影字典、用户评分字典以及电影和流派的矩阵字典,为推荐系统测试做准备。程序包括加载100k和1M数据的函数,以及提取和输出电影流派信息的功能。
摘要由CSDN通过智能技术生成

movielens是一个开源的训练和测试推荐系统的数据包。

测试自己的推荐系统的准备工作就是把这个测试数据载入程序,并且处理成自己程序设定的格式。

以下是python源码:(路径都是我电脑中的文件路径,大家需要修改成自己的路径)

#!/usr/bin/python

#这个程序先把100k那个包里u.item的电影id和电影名称提取出来,并生成一个电影字典movies,然后

#将u.data中的用户id和电影id以及对应的rating提取出来,生成一个用户的打分字典。

def

loadMovieLens_100k(path='C:/Users/Administrator/Desktop/ci_code/ml-100k'):

# Get movie titles

movies={}

for line in open(path+'/u.item'):

(id,title)=line.split('|')[0:2]

movies[id]=title

# Load data

prefs={}

for line in open(path+'/u.data'):

(user,movieid,rating,ts)=line.split('\t')

prefs.setdefault(user,{})

prefs[user][movies[movieid]]=float(rating)

return prefs

#这个程序用同样的方法生成了1m那个包的评分字典

def

loadMovieLens_1M(path='C:/Users/Administrator/Desktop/ci_code/ml-1m'):

#get ratings

prefs={}

for line in open(path+'/ratings.dat'):

(user,movie,rating,ts)=line.split('::')

prefs.setdefault(user,{})

prefs[user][movie]=float(rating)

return prefs

#将电影和流派提取出来,写成一个电影-流派的矩阵字典

def

loadMovieTag(path='C:/Users/Administrator/Desktop/ci_code/ml-1m'):

#get movie-tag matrix

movies={}

for line in open(path+'/movies.dat'):

(id,title,tag)=line.split('::')

movies[id]=tag

# movies=sorted(movies.items(),key=lambda

d:d[0],reverse=False)

return movies

#将电影和流派提取出来,写成一个用户-电影-流派的字典

def

loadUserTag(path='C:/Users/Administrator/Desktop/ci_code/ml-1m'):

#get movie-tag matrix

movies={}

for line in open(path+'/movies.dat'):

(movie,title,tag)=line.split('::')

movies[movie]=tag

users={}

for line in open(path+'/ratings.dat'):

(userid,movieid)=line.split('::')[0:2]

users.setdefault(userid,{})

users[userid][movieid]=movies[movieid]

# users=sorted(users.items(),key=lambda

d:d[0],reverse=False)#sort the users dict as the key of dict

return users

#将电影--流派字典输出成文件

def outputMovieTag():

movie_tag=loadMovieTag()

f=file('tag.dat','w+')

for num in movie_tag:

f.write('%s::' %num)

for tag in movie_tag[num]:

f.write('%s' %tag)

f.close()

outputMovieTag()

#将用户-电影--流派字典输出成文件

def outputUserTag():

user_tag=loadUserTag()

f=file('user_tag.dat','w+')

for user in user_tag:

f.write('userid:%s\n' %user)#user id

for movie in user_tag[user]:

f.write('\t%s: ' %movie)

f.write('%s' %user_tag[user][movie])

f.write('\n')

f.close()

outputUserTag()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值