转:数据挖掘十大经典算法之apriori算法源代码转
20120512190556
标签:apriori数据挖掘算法关联规则杂谈
分类:电脑吧
原文httpblogcsd
etliema2000articledetails6118423
数据挖掘十大经典算法之apriori算法源代码
TheApriorialgorithm
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。VC界面的源代码见httpdow
loadcsd
etsource2963738
由Agrawal等人提出的Apriori是经典的关联规则和频繁项集挖掘算法,围绕着它的改进和实现有大量的文献。该算法是挖掘产生布尔关联规则频繁项目集的经典算法,从其产生到现在对关联规则挖掘方面的研究有着很大的影响。为了提高频繁项目的挖掘效率,Apriori算法利用了两个重要的性质,用于压缩搜索的空间。【1】若X为频繁项目集,则X的所有子集都是频繁项目集。【2】若X为非频繁项目集,则X的所有超集均为非频繁项目集。Apriori算法的处理流程为:宽度优先搜索整个项集空间,从k0开始,迭代产生长度为k1的候选项集的集合Ck1。候选项集是其所有子集都是频繁项集的项集。C1由I0中所有的项构成,在第k层产生所有长度为k1的项集。这由两步完成:第一步,Fk自连接。将Fk中具有相同k1前缀的项集连接成长度为k的候选项集。第二步是剪枝,如果项集的所有长度为k的子集都在Fk中,该项集才能作为候选项集被加入Ck1中。为了计算所有长度为k的候选项集的支持度,在数据库水平表示方式下,需要扫描数据库一遍。在每次扫描中,对数据库中的每条交易记录,为其中所包含的所有候选k项集的支持度计数加1。所有频繁的k项集被加入Fk中。此过程直至Ck1等于空集时结束。
f算法AprioriI
putOutput:Tra
sactio
DataBaseD,Mi
imumsupportthresholdmi
sup。Freque
tpatter
L
1L1search_freque
t_1itemsetsD2fork2Lk1≠φkdo3begi
4Ckapriorige
Lk15foralltra
sactio
stDdo6begi
789CtsubsetCk,tforallca
didatescCtdoccou
t
10e
d11LkcCkccou
t≥mi
sup12e
d13A
swerL∪kLkProcedureSearch_freque
t_1itemsetsD1begi
2foralltra
sactio
stDdo3begi
4foreachitemiktdo5ikcou
t
6e
d
f7L1iIicou
t≥mi
sup8retur
L19e
dProcedureapriori_ge
Lk1begi
2foreachitemsetl1Lkdo3456789101112foreachitemsetl2Lkdobegi
ifl11l21l12l22…l1k1l2k1r