mahout下实现FP算法
数据准备
到http://fimi.ua.ac.be/data/下载一个购物篮数据retail.dat。
上传到hadoop文件系统
bin/hadoop fs -mkdir f_input
bin/hadoop fs -put input/retail.dat f_input
调用FpGrowth算法:
bin/mahout fpg -i f_input/retail.dat -o patterns -method mapreduce -s 1000 -regex '[\ ]'
-i表示input,-o表示-output,-s表示最小支持度,'[\ ]'表示以行内的数据以空格分开。
或者
mahout fpg -i output.dat -o patterns -k 10 -method mapreduce -regex '[\ ]' -s 10
指令的含义在mahout的网站上有详细说明,简要说下,-i表示输入,-o表示输出,-k 10表示找出和某个item相关的前十个频繁项,-method mapreduce表示使用mapreduce来运行这个作业,-regex '[\ ]'表示每个transaction里用空白来间隔item的,-s 10表示只统计最少出现10次的项。
一两分钟后执行完毕,生成的文件被序列化了,直接查看会是乱码,因此需要用mahout还原回来:
bin/mahout seqdumper -i patterns/fpgrowth/part-r-00000 (-o 你想输出的路径如:/home/wangnan/hadoop-1.2.1/output/patterns.txt)
这里输出的只是频繁项集,但在此基础上提取关联规则已经不是难事。
参考网址:
http://www.cnblogs.com/fengfenggirl/p/associate_mahout.html