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

2024-02-14 10:58

本文主要是介绍数据挖掘系列(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)
复制代码

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

这篇关于数据挖掘系列(5)使用mahout做海量数据关联规则挖掘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708310

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t