发布时间 : 星期三 文章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