注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

奕克

爱家人爱工作爱生活

 
 
 

日志

 
 

用Python和Orange完成超简单的关联规则挖掘(转)  

2010-09-21 23:09:52|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    本文对新浪音乐用户的听歌记录进行一个简易挖掘,希望能根据用户以往的听歌记录,推荐出用户可能感兴趣的其他歌曲。首先解释几个相关概念:
 
Python
         一门非常有前途的兼具过程式、函数式和面向对象混合风格的语言,具有很多的第三方库,流行版本为2.4版,具体参考http://www.python.org/
 
Orange
一个模块化的C++开源数据挖掘包,提供python接口(好像也只提供了python接口),网址是http://www.ailab.si/orange/
 
关联分析
我这里用的是类似购物篮分析,每个用户的听歌id是一个事务,不熟悉关联分析的同学可以去搜一些相关方面的资料。
 
数据准备
        简单清洗掉一些“脏”数据(逻辑上有问题的数据,比如某个用户在5s听了200首歌),得到类似下面的数据
15615,355029,750367,762147,803787,805014,999712,999712,999712,1013641,1024215,1028429
871029,952779,962769
1023040,1024077,1024215,1025600
757946,873801,873801,873801
862257,873479
286056,286056,286056,286056,286056,286056,286056,286056,286056,286056
873801,873801,873801,873801,873801,947750,947750
473221,473537,504206,504206,504206,504206,504206,504206
947750,1005430,1005430

每一行是一个用户的听歌记录,没有做去重处理(orange示例中也没有,是不是可能会增加歌曲的权重?不清楚,没有去阅读orange代码),注意文件名一定要以.basket为扩展名,程序中文件地址是d:/datamining/sample.basket。
 
程序如下:
# 导入orange包import orange # 导入数据,注意不需要后缀data = orange.ExampleTable("d:/datamining/sample") # 挖掘关联规则,输入最低支持度、最低置信度、最大项集数rules = orange.AssociationRulesSparseInducer(data, support = 0.5, confidence = 0.6, maxItemSets = 1000000) #  打印出规则来for r in rules:    print "%5.3f   %5.3f   %s" % (r.support, r.confidence, r)
 
    是不是非常的简单?Orange实现的是Apriori算法,由于Apriori算法的问题,一旦数据量非常大,你就等着你的内存消耗光吧,如果要高效的关联规则挖掘算法,可以试试实现FP-tree算法,本文仅起到抛砖引玉的效果。
  评论这张
 
阅读(1335)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017