apriori算法是关联规则挖掘中很基础也很经典的一个算法,我认为很多教程出现大堆的公式不是很适合一个初学者理解。因此,本文列举一个简单的例子来演示下apriori算法的整个步骤。

  下面这个表格是代表一个事务数据库D,其中最小支持度为50%,最小置信度为70%,求事务数据库中的频繁关联规则。

Tid 项目集
1  面包,牛奶,啤酒,尿布
2  面包,牛奶,啤酒
3  啤酒,尿布
4  面包,牛奶,花生

  apriori算法的步骤如下所示:

  (1)生成候选频繁1-项目集C1={{面包},{牛奶},{啤酒},{花生},{尿布}}。

  (2)扫描事务数据库D,计算C1中每个项目集在D中的支持度。从事务数据库D中可以得出每个项目集的支持数分别为3,3,3,1,2,事务数据库D的项目集总数为4,因此可得出C1中每个项目集的支持度分别为75%,75%,75%,25%,50%。根据最小支持度为50%,可以得出频繁1-项目集L1={{面包},{牛奶},{啤酒},{尿布}}。

  (3)根据L1生成候选频繁2-项目集C2={{面包,牛奶},{面包,啤酒},{面包,尿布},{牛奶,啤酒},{牛奶,尿布},{啤酒,尿布}}。

  (4)扫描事务数据库D,计算C2中每个项目集在D中的支持度。从事务数据库D中可以得出每个项目集的支持数分别为3,2,1,2,1,2,事务数据库D的项目集总数为4,因此可得出C2中每个项目集的支持度分别为75%,50%,25%,50%,25%,50%。根据最小支持度为50%,可以得出频繁2-项目集L2={{面包,牛奶},{面包,啤酒},{牛奶,啤酒},{啤酒,尿布}}。

  (5)根据L2生成候选频繁3-项目集C3={{面包,牛奶,啤酒},{面包,牛奶,尿布},{面包,啤酒,尿布},{牛奶,啤酒,尿布}},由于C3中项目集{面包,牛奶,尿布}中的一个子集{牛奶,尿布}是L2中不存在的,因此可以去除。同理项目集{面包,啤酒,尿布}、{牛奶,啤酒,尿布}也可去除。因此C3={面包,牛奶,啤酒}。

  (6)扫描事务数据库D,计算C3中每个项目集在D中的支持度。从事务数据库D中可以得出每个项目集的支持数分别为2,事务数据库D的项目集总数为4,因此可得出C2中每个项目集的支持度分别为50%。根据最小支持度为50%,可以得出频繁3-项目集L3={{面包,牛奶,啤酒}}。

  (7)L=L1UL2UL3={{面包},{牛奶},{啤酒},{花生},{尿布},{面包,牛奶},{面包,啤酒},{牛奶,啤酒},{啤酒,尿布},{面包,牛奶,啤酒}}。

  (8)我们只考虑项目集长度大于1的项目集,例如{面包,牛奶,啤酒},它的所有非真子集{面包},{牛奶},{啤酒},{面包,牛奶},{面包,啤酒},{牛奶,啤酒},分别计算关联规则{面包}—>{牛奶,啤酒},{牛奶}—>{面包,啤酒},{啤酒}—>{面包,牛奶},{面包,牛奶}—>{啤酒},{面包,啤酒}—>{牛奶},{牛奶,啤酒}—>{面包}的置信度,其值分别为67%,67%,67%,67%,100%,100%。由于最小置信度为70%,可得},{面包,啤酒}—>{牛奶},{牛奶,啤酒}—>{面包}为频繁关联规则。也就是说买面包和啤酒的同时肯定会买牛奶,买牛奶和啤酒的同时也是会买面包。

关于apriori算法的一个简单的例子的更多相关文章

  1. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  2. Spring-Context之一:一个简单的例子

    很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的 ...

  3. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  4. fitnesse - 一个简单的例子(slim)

    fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行  2.1 新建wikiPage  2.2 运行 ...

  5. Struts2的配置和一个简单的例子

    Struts2的配置和一个简单的例子 笔记仓库:https://github.com/nnngu/LearningNotes 简介 这篇文章主要讲如何在 IntelliJ IDEA 中使用 Strut ...

  6. 一个简单的例子搞懂ES6之Promise

    ES5中实现异步的常见方式不外乎以下几种: 1. 回调函数 2. 事件驱动 2. 自定义事件(根本上原理同事件驱动相同) 而ES6中的Promise的出现就使得异步变得非常简单.promise中的异步 ...

  7. 一个简单的例子了解states

    在大规模的配置管理工作中,我们要编写大量的states.sls文件.top.sls是states系统的入口文件,它负责指定哪些设备调用哪些states.sls文件.statse的默认工作目录是在/sr ...

  8. 跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

    跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击 一.总结 一句话总结:比如用户留言功能,用户留言中写的是网页可执行代码,例如js代码,然后这段代码在可看到这段留言的不同一户的显示上就会 ...

  9. Linux内核中的信号机制--一个简单的例子【转】

    本文转载自:http://blog.csdn.net/ce123_zhouwei/article/details/8562958 Linux内核中的信号机制--一个简单的例子 Author:ce123 ...

随机推荐

  1. POJ1595_Prime Cuts【素数】【水题】

    Prime Cuts Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 10464Accepted: 3994 Description ...

  2. Android笔记之 文件保存、压缩与清空删除

    这两天改进优化项目中图片上传的代码.考虑到可能有7.8M的比較大的图片,由于要先进行压缩.所以设计到文件的压缩,保存与清空删除操作. 在这里记下笔记. /** * 压缩并另存为,每次先清空再保存 */ ...

  3. MediaPlayer 音频播放 示例

    状态机.流程图.生命周期 对播放音频/视频文件和流的控制是通过一个状态机来管理的.下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态. 椭圆代表MediaPlayer对象可 ...

  4. SpringMVC09异常处理和类型转化器

    public class User { private String name; private Integer age; public String getName() { return name; ...

  5. 分析器错误消息: 未能加载类型“WebApplication._Default”

    1.新建一个空白解决方案2.新闻一个Web Application项目 默认就有Default.aspx 直接调试的时候出现-------------------------------------- ...

  6. Repeater的ItemDataBound 事件中e.Item.DataItem 的数据类型

    1.使用DataSet和DataTable绑定数据源时 DataRowView view = (DataRowView)e.Item.DataItem; 2.DataReader绑定数据源时 Syst ...

  7. ods_yx给用户分配表空间、权限用户等工作内容。

    1.登陆运维审计 huang_cb.bl hac12345 2.找到81.35   root-admin  nwsj*2013 3.打开oracle EMC工具,使用ods_yx用户登陆进EMC里面的 ...

  8. UIVIew之霓虹灯实现

    // // AppDelegate.m // NiHongPractice // #import "AppDelegate.h" #define kColorValue arc4r ...

  9. jQuery旋转插件

    jQuery旋转插件,支持Internet Explorer 6.0 + .Firefox 2.0.Safari 3.Opera 9.Google Chrome,高级浏览器下使用Transform,低 ...

  10. Sql 日期时间 转换

    sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...