Apriori算法C++实现

最近刚上了数据挖掘这门课,老师讲了两个算法,即Apriori算法和FP-growth算法,然后布置了上机作业,挖掘一个有8万行的记录的retail.dat,需要从中找出强规则,即同时满足最小支持度和最小置信度的规则。

Apriori算法

在这里给出一个实现找出所有频繁模式集的c++代码,其中主要使用的存储结构是二维数组,有点简陋,凑合着看看。
另外,这个版本是刚写出来初始版本,自连接之后没有修剪步骤,而是直接扫描数据库,所以效率偏低。

这个版本测试时用的最小支持度是2000,这个支持度比较大,所以输出结果还是较快的。不过如果最小支持度设为1000以下的话,那么运行速度就差了很多。
在这里插入图片描述
改进之后增加了修剪步骤的算法运行速度在最小支持度较低时运行速度明显加快,但是还是耗时较长。
初始版本
改进算法
可以看到,在最小支持度在500时,改进后的算法提升了一分多钟,因此修剪对于Apriori算法来说是很重要的一步。

12.02更新

这两天本来打算补完修剪部分,就去研究一下FP-growth算法的。结果发现树的知识还不会,准备先把数据结构的树部分的OJ题刷完再写。于是这两天一直在优化Apriori算法,终于在参考了韩家伟教授的《数据挖掘:概念与技术》一书后,明白了可以用散列函数来处理2项集,效率一下子就提上来了。在这里给出书中的描述。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值