L1,k=2的运行结果:
[frozenset({1, 3}), frozenset({1, 2}), frozenset({1, 5}), frozenset({2, 3}), frozenset({3, 5}), frozenset({2, 5})]
我们写个测试以上代码
'''测试频繁项集生产''' def testApriori(): # 加载测试数据集 dataSet = loadDataSet() print ('dataSet: ', dataSet) # Apriori 算法生成频繁项集以及它们的支持度 L1, supportData1 = apriori(dataSet, minSupport=0.7) print ('L(0.7): ', L1) print ('supportData(0.7): ', supportData1) print ('->->->->->->->->->->->->->->->->->->->->->->->->->->->->') # Apriori 算法生成频繁项集以及它们的支持度 L2, supportData2 = apriori(dataSet, minSupport=0.5) print ('L(0.5): ', L2) print ('supportData(0.5): ', supportData2)运行结果如下:
dataSet: [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]] L(0.7): [[frozenset({3}), frozenset({2}), frozenset({5})], [frozenset({2, 5})]] supportData(0.7): {frozenset({5}): 0.75, frozenset({3}): 0.75, frozenset({3, 5}): 0.5, frozenset({4}): 0.25, frozenset({2, 3}): 0.5, frozenset({2, 5}): 0.75, frozenset({1}): 0.5, frozenset({2}): 0.75} ->->->->->->->->->->->->->->->->->->->->->->->->->->->-> L(0.5): [[frozenset({1}), frozenset({3}), frozenset({2}), frozenset({5})], [frozenset({3, 5}), frozenset({1, 3}), frozenset({2, 5}), frozenset({2, 3})], [frozenset({2, 3, 5})]] supportData(0.5): {frozenset({5}): 0.75, frozenset({3}): 0.75, frozenset({2, 3, 5}): 0.5, frozenset({1, 2}): 0.25, frozenset({1, 5}): 0.25, frozenset({3, 5}): 0.5, frozenset({4}): 0.25, frozenset({2, 3}): 0.5, frozenset({2, 5}): 0.75, frozenset({1}): 0.5, frozenset({1, 3}): 0.5, frozenset({2}): 0.75}到这一步,我们就找出我们所需要的 频繁项集 和他们的 支持度 了,接下来再找出关联规则即可!
第六步从频繁项集中挖掘关联规则集合中的元素是不重复的,但我们想知道基于这些元素能否获得其它内容。 某个元素或某个元素集合可能会推导出另一个元素。 从先前 杂货店 的例子可以得到,如果有一个频繁项集 {豆奶,莴苣},那么就可能有一条关联规则 “豆奶 -> 莴苣”。 这意味着如果有人买了豆奶,那么在统计上他会购买莴苣的概率比较大。 但是,这一条件反过来并不总是成立。 也就是说 “豆奶 -> 莴苣” 统计上显著,那么 “莴苣 -> 豆奶” 也不一定成立。