Apriori算法-频繁项集-关联规则
计算频繁项集: 首先生成一个数据集 def loadDataSet(): return [[ 1 , 3 , 4 ], [ 2 , 3 , 5 ], [ 1 , 2 , 3 , 5 ], [ 2 , 5 ]] 测试数据集dataset有了,第一步,我们要根据数据集dataset得到一个集合C1,集合C1中包含的元素为dataset的无重复的每个单元素,候选项集。 def createC1(dataset): C1 = [] for transaction in dataset: for item in transaction: if not [item] in C1: C1.append([item]) C1.sort() return map(frozenset, C1) 返回的数据map计算得到一个元素为frozenset的集合。 为什么要转成frozenset? 原因两个: 1. 这个集合是从dataset中抽取出所有无重复的数据集,是固定的,应该是不可变的类型。 2. frozenset可以作字典 可以看一下返回结果: 第二步,计算C1<key>每个元素key的支持度。 支持度= count(key) / sizeof(C1) def scanD(D, Ck, minSupport): ssCnt = {} for tid in D: for can in Ck: if