数据挖掘(5):使用mahout做海量数据关联规则挖掘

http://blog.jobbole.com/90163/

上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,mahout是一个基于hadoop的分布式数据挖掘开源项目(mahout本来是指一个骑在大象上的人)。掌握了关联规则的基本算法和使用,加上分布式关联规则挖掘后,就可以处理基本的关联规则挖掘工作了,实践中只需要把握业务,理解数据便可游刃有余。

 

安装mahout

骑在大象上的侠士必然需要一头雄纠纠的大象,不过本文不解绍大象hadoop,所以我假定已经安装好了hadoop,关于hadoop的安装,请google。

Apache官网下载mahout8.0

解压

1
tar -zxvf mahout-distribution- 0.8 .tar.gz

移动

1
sudo mv tar mahout-distribution- 0.8 /usr/local/mahout- 8

配置

1
sudo gedit /etc/profile

输入以下内容:

1
2
3
4
export MAHOUT_HOME=/usr/local/mahout- 8
export PATH=$MAHOUT_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH

退出用户重新登录,使配置文件生效。输入mahout -version测试是否安装成功。

 

数据准备

http://fimi.ua.ac.be/data/下载一个购物篮数据retail.dat。

上传到hadoop文件系统

1
2
hadoop fs -mkdir /user/hadoop/mahoutData #创建目录
hadoop fs -put ~/data/retail.dat /user/hadoop/mahoutData

调用FpGrowth算法

1
mahout fpg -i /user/hadoop/mahoutData/retail.dat -o patterns -method mapreduce -s 1000 -regex '[\ ]'

-i表示input,-o表示-output,-s表示最小支持度,’[\ ]‘表示以行内的数据以空格分开。

一两分钟后执行完毕,生成的文件被序列化了,直接查看会是乱码,因此需要用mahout还原回来:

1
mahout seqdumper -i /user/hadoop/patterns/fpgrowth/part-r- 00000 -o ~/data/patterns.txt

输出结果:

1
2
3
4
5
6
7
8
Key: 39 : Value: ([ 39 ], 50675 )
Key: 48 : Value: ([ 48 ], 42135 ), ([ 39 , 48 ], 29142 )
Key: 38 : Value: ([ 38 ], 15596 ), ([ 39 , 38 ], 10345 ), ([ 48 , 38 ], 7944 ), ([ 39 , 48 , 38 ], 6102 )
Key: 32 : Value: ([ 32 ], 15167 ), ([ 39 , 32 ], 8455 ), ([ 48 , 32 ], 8034 ), ([ 39 , 48 , 32 ], 5402 ), ([ 38 , 32 ], 2833 ), ([ 39 , 38 , 32 ], 1840 ), ([ 48 , 38 , 32 ], 1646 ), ([ 39 , 48 , 38 , 32 ], 1236 )
Key: 41 : Value: ([ 41 ], 14945 ), ([ 39 , 41 ], 11414 ), ([ 48 , 41 ], 9018 ), ([ 39 , 48 , 41 ], 7366 ), ([ 38 , 41 ], 3897 ), ([ 32 , 41 ], 3196 ), ([ 39 , 38 , 41 ], 3051 ), ([ 48 , 38 , 41 ], 2374 ), ([ 39 , 32 , 41 ], 2359 ), ([ 48 , 32 , 41 ], 2063 ), ([ 39 , 48 , 38 , 41 ], 1991 ), ([ 39 , 48 , 32 , 41 ], 1646 )
Key: 65 : Value: ([ 65 ], 4472 ), ([ 39 , 65 ], 2787 ), ([ 48 , 65 ], 2529 ), ([ 39 , 48 , 65 ], 1797 )
Key: 89 : Value: ([ 89 ], 3837 ), ([ 48 , 89 ], 2798 ), ([ 39 , 89 ], 2749 ), ([ 39 , 48 , 89 ], 2125 )
Key: 225 : Value: ([ 225 ], 3257 ), ([ 39 , 225 ], 2351 ), ([ 48 , 225 ], 1736 ), ([ 39 , 48 , 225 ], 1400 )

这里输出的只是频繁项集,但在此基础上提取关联规则已经不是难事。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值