用MovieLens数据集做推荐(Python推荐系统二)

思路:下载MovieLens的数据集,对数据集进行函数定义,定义各数据列的名称,根据上一篇Python写出简单的推荐系统(一) 文中的recommendations.py 的用户相似度进行推荐。

              下载MovieLens的地址: http://grouplens.org/datasets/movielens/  

(选择ml-100k.zip), 下载后的路径可以是和recommendations.py相同,也可是任意Python下面的其他地方,后面会针对两种情况做相关说明。

 

将下列Python 代码添加到之前recommendations.py 里面:

[python]  view plain  copy
  1. def loadMovieLensTrain(filename='u1.base'):  
  2.     str1 ='./ml-100k/'       
  3.   
  4.     #加载数据  
  5.     prefs={}  
  6.     for line in open(str1+filename,'r'):  
  7.         (user,movieid,rating,ts)=line.split('\t')  
  8.         prefs.setdefault(user,{})  
  9.         prefs[user][movieid]=float(rating)  
  10.     return prefs  
  11.   
  12. def loadMovieLensTest(filename='u1.test'):                        
  13.     str1 ='./ml-100k/'  
  14.   
  15.     #加载数据  
  16.     prefs={}  
  17.     for line in open(str1+filename,'r'):  
  18.         (user,movieid,rating,ts)=line.split('\t')  
  19.         prefs.setdefault(user,{})  
  20.         prefs[user][movieid]=float(rating)  
  21.     return prefs               
  22.   
  23. if __name__=="__main__":  
  24.     print ("""这个部分可以进行上面2个函数测试""")  
  25.   
  26.     trainDict= loadMovieLensTrain()  
  27.     testDict = loadMovieLensTest()  
  28.   
  29.     print (len(trainDict))  
  30.     print (len(testDict))  
  31.     print ("""测试通过""")  

          这里的str1=’./ml-100k/’   表明的是相对路径,此时的ml-100文件夹必须是和recommendations.py 文件一个路径。如果不在一个路径,因为运行的最终是recommendations.py文件,所以用的是ml-100k 全路径名,例如:

           str1:’E:/Python/ml-100k’

 

先运行进行了更新的recommendations.py 文件,得到测试的结果:

>>>

这个部分可以进行上面2个函数测试

943

459

测试通过

表明函数式正确的,如果出现提示说’u1.base’ 或’u1.test’的格式不能读取,则可用Notepad++ 修改格式。(具体见 Notepad++修改文件编码格式



查看loadMovieLensTrain里的列表

>>> import recommendations

>>> prefs =recommendations.loadMovieLensTrain()

>>> prefs['1']

返回所有对应的评分数据列表

 

对id号为1的用户推荐三个物品:

>>>recommendations.getRecommendations(prefs,'1')[0:3]

[(5.000000000000001, '1293'), (5.0,'1653'), (5.0, '1599')]



参考资料:http://blog.csdn.net/database_zbye/article/details/8664516


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值