实验三、应用 Apriori 算法挖掘频繁项集

  • 实验目的:

(1) 熟悉 VC++编程工具和 Apriori 频繁项集挖掘算法。

(2) 根据管理层的需求,确定数据挖掘的任务,明确数据挖掘的功能,也就是明确要挖掘什么。

(3) 由确定的数据挖掘任务,从实验一处理后的结果中,采用切块或切片等联机分析处理技术,选择出挖掘任务相关数据。

(4) 用 VC++编程工具编写 Apriori 算法的程序,对任务相关数据运行 Apriori 算法,挖掘出所有的频繁项集。

(5) 写出实验报告。

二、 实验原理:

1、 Apriori 算法

Apriori 使用一种称作逐层搜索的迭代方法,k 项集用于探索(k+1)项集。

首先,通过扫描数据库,累计每个项的计数,并收集满足最小支持度的项,找出频繁 1 项集的集合。该集合记作 L1。然后,L1 用于找频繁 2 项集的集合L2,L2 用于找 L3,如此下去,直到不能再找到频繁 k 项集。找每个 Lk 需要一次数据库全扫描。

2、 提高频繁项集逐层产生的效率

Apriori 性质:频繁项集的所有非空子集也必须是频繁的

三、 实验内容:

1、实验内容

在给定的数据中提取统一购物篮购买的商品信息,由这些数据构成事务数据

库D,挖掘其中的频繁项集 L。挖掘频繁项集的算法描述如下:

Apriori 算法:使用逐层迭代找出频繁项集

输入:事务数据库 D;最小支持度阈值。输出:D 中的频繁项集 L。

1.挖掘频繁 1-项集

2.调用 apriori_gen 方法生成候选频繁

3.扫描事务数据库 D ,统计候选频繁 k-项集的计数,满足最小支持度的 k-项集即为频繁k-项集

4.合并频繁 k-项集(k>0)

算法在根据频繁 k-1 项集生成频繁 K 项集过程中要计算频繁 K 项集中每个元素的支持度,并计算 K 项集中每个 k-1 项子集是否在 Fk-1 中,上述两条任何一条不满足,则删去这个 K 项集中的元素。

2、实验步骤

1.打开试验用数据,读取出同一流水号的商品ID并取前5位,生成以行为单位生成事务数据集 transitions;

2. 生成频繁一项集

3.候选集产生算法

4.判断候选集的元素

  1. 程序框图

四、 实验结果:

1.实验数据

  1)1019n.txt

2)1020n.txt

3)1021n.txt

2.处理结果

  1)创建事务数据库D

(new1.txt)

(new2.txt)

(new3.txt)

  1. 挖掘频繁集项

(new1.txt)

(new2.txt)

(new3.txt)

程序由两组代码组成,一组代码负责生成事物数据库,另一组代码进行Apriori 算法挖掘运算,成功挖掘出频繁集

3. 实验结论

如果使用枚举的方法来寻找频繁集,那么工程量是巨大的,而Apriori算法基于先验性质,使用逐层搜索的迭代方法,利用k项集来探索k+1项集的方法来获取频繁集,大大减少了工作量,提高了运行效率。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值