Apriori算法的思想及核心伪代码 联系客服

发布时间 : 星期三 文章Apriori算法的思想及核心伪代码更新完毕开始阅读132766e2dd36a32d72758159

Apriori算法的思想及核心伪代码

找出频繁项集:

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

(1)L1=find_frequent_1_itemsets(D); (2)For(k=2;Lk-1≠?;k++){

(3)Ck=aproiri_gen(Lk-1,min_sup); //根据频繁(k-1)-项集产生候选k-项集

(4)For each transaction t∈D{ //扫描数据库,以确定每个候选项集的 支持度

(5)Ct=subset(Ck,t); // 获得t所包含的候选项集 (6)For each candidate c∈ Ct (7)c.count++; (8)}

(9)Lk={c∈Ck? c.count≥min_sup} (10)}

(11)return L=∪kLk;

Procedure apriori_gen(Lk-1;min_sup) //连接(1~4步)和剪枝(5~7)函数算法

(1)for each itemset l?∈ Lk-1 (2)for each itemset l?∈ Lk-1

(3)if(l?[1]= l?[2]∧...∧( l?[k-2]= l?[k-2])∧ (l?[k-1]

(4)c=l?⊕l?; //将两个项集连接一起

(5)if has_infrequent_subset(c,Lk-1)then

(6)delete c; //出去不可能产生频繁项集的候选项集 (7)else add c to Ck; (8)}

(9)return Ck;

Procedure has_infrequent_subset(c,Lk-1) //非频繁子集的测试函数算法 (1)for each (k-1)-subset s of c (2)if s ?Lk-1 then

(3)return TRUE; (4)return FALSE;

由频繁项集生成关联规则:

输入:频繁项集(Lk ), 最小支持度阀值(min_sup)和最小置信度阈值(min_ conf).

输出:强关联规则。

Procedure GenAssociationRule (Lk ,min_conf) Begin

1) for each frequent i_itemset li of Lk do { 对于Lk 集合中的每一个i_项集li

2) if li is not 1_itemset then { 若li 不是1_项集

3) SubItems =GenSubItemSet (Lk ); 按照项数递增方式生成Lk 的所有子集, 并入库

4) AR_gen =AssociationRule(Lk , min_conf); 产生强关联规则, 并入规则库

5) Show_AR =ShowAssociationRule (); 显示强关联规则 6 ) } 7 ) } End