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

来源:互联网 发布:自助点餐软件 编辑:程序博客网 时间:2024/06/05 16:45

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
原创粉丝点击