关联规则挖掘算法python_利用orange进行关联规则挖掘

本文介绍了如何使用Python的Orange库进行关联规则挖掘,以分析新浪音乐用户的听歌记录,从而推荐用户可能感兴趣的歌曲。通过Apriori算法,对数据进行预处理和挖掘,但由于算法的局限性和数据的特性,实际效果有限,更适合应用于电影推荐等领域。
摘要由CSDN通过智能技术生成

转自:http://www.fuchaoqun.com/2008/08/data-mining-with-python-orange-association_rule/

最近,趁着项目的间隙,折腾了一阵数据挖掘,在同事的帮助下,对新浪音乐用户的听歌记录进行了一个简易挖掘,希望能根据用户以往的听歌记录,推荐出用户可能感兴趣的其他歌曲。

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

974748,1024215

873479,873479,873801,873801,947750,965748,999721,1024215,1024215,1024215,1024215,1024215

873801,873801,873801

每一行是一个用户的听歌记录,没有做去重处理(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算法的问题,一旦数据量非常大,你就等着你的内存消耗光吧,反正我这边要是把所有数据都导入进去的话,笔记本1.5G的的内存根本不够用,可以试试FP-tree算法

,我这边参考文章利用sql改良构建fp-tree之技术

,已经把fp-tree的前缀路径都找出来了,需要的朋友可以私下找我要,由fp前缀路径挖频繁集需要用到递归,用sql去处理就非常费劲了,所以后面的算法还需要自己去探索。

居于关联规则的挖掘就告一段落,因为算法的计算复杂度非常高,效果倒不是太好(因为对于音乐,用户可能听多遍,这样打分就不一样,可能用关联规则去挖电影类的数据比较好,因为电影一般最多就看一遍),现在研究的是协同过滤

,如果不出意外的话,一个改良版的PHP+Mysql实现slope one

算法过几天就要出来了,到时候我会开源出来的。

分享到:

2009-09-18 10:43

浏览 7307

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值