zoukankan      html  css  js  c++  java
  • 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘

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

    安装mahout

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

      到Apache官网下载mahout8.0

      解压

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

      移动

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

      配置

    sudo gedit /etc/profile

      输入以下内容:

    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文件系统  

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

    调用FpGrowth算法

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

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

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

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

      输出结果:  

    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)

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

     感谢阅读,欢迎回帖交流

    转正请注明出处:www.cnblogs.com/fengfenggirl

  • 相关阅读:
    Swift入门篇-Hello World
    Swift入门篇-swift简介
    Minecraft 插件 world edit 的cs 命令
    搭建本地MAVEN NEXUS 服务
    MC java 远程调试 plugin 开发
    企业内部从零开始安装docker hadoop 提纲
    javascript 命令方式 测试例子
    ca des key crt scr
    JSF 抽象和实现例子 (函数和属性)
    form 上传 html 代码
  • 原文地址:https://www.cnblogs.com/fengfenggirl/p/associate_mahout.html
Copyright © 2011-2022 走看看