# Apriori **Repository Path**: cnbin/Apriori ## Basic Information - **Project Name**: Apriori - **Description**: 运用Python2.7.12,使用Apriori算法进行关联分析 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-01-21 - **Last Updated**: 2022-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #Apriori ### **关联分析** 关联分析是一宗在大规模数据集中寻找又去关系的任务。 这些关系可以有两种形式:频繁项集或者关联规则。频繁项集是指经常出现在一块的物品的集合,而关联规则则暗示着两种物品之间可能存在的很强的关系(即如果出现物品A,则大概率会出现物品B)。 关联分析的目标包括两项:发现频繁项集和发现关联规则。首先,利用Apriori算法找到所有的频繁项集,然后根据频繁项集来发现关联规则。 ### **Apriori算法** - 优点:易编码实现。 - 缺点:在大数据集上可能较慢。 - 适用数据类型:数值型或者标称型数据。 ### **程序apriori-test.py的运行结果:** ``` %Run apriori-test.py step-0:创建一个用于测试的简单数据集dataSet dataSet: [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]] step-1:将数据集中全部记录所包含的不同项作为单元素集合添加至列表C1 C1: [frozenset({1}), frozenset({2}), frozenset({3}), frozenset({4}), frozenset({5})] step-2:将数据集dataSet列表中的元素转化为集合 D: [{1, 3, 4}, {2, 3, 5}, {1, 2, 3, 5}, {2, 5}] step-3:对数据集D中的集合进行扫描,计算列表C1集合中的支持度,并将支持度大于最小支持度的集合存入频繁项集列表L1 L1: [frozenset({1}), frozenset({3}), frozenset({2}), frozenset({5})] suppData0: {frozenset({4}): 0.25, frozenset({5}): 0.75, frozenset({2}): 0.75, frozenset({3}): 0.75, frozenset({1}): 0.5} step-4:利用apriori算法发现频繁项集 L: [[frozenset({1}), frozenset({3}), frozenset({2}), frozenset({5})], [frozenset({3, 5}), frozenset({1, 3}), frozenset({2, 5}), frozenset({2, 3})], [frozenset({2, 3, 5})], []] suppData: {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} step-5:从频繁项集中挖掘关联规则 frozenset({5}) --> frozenset({3}) conf: 0.6666666666666666 frozenset({3}) --> frozenset({5}) conf: 0.6666666666666666 frozenset({3}) --> frozenset({1}) conf: 0.6666666666666666 frozenset({1}) --> frozenset({3}) conf: 1.0 frozenset({5}) --> frozenset({2}) conf: 1.0 frozenset({2}) --> frozenset({5}) conf: 1.0 frozenset({3}) --> frozenset({2}) conf: 0.6666666666666666 frozenset({2}) --> frozenset({3}) conf: 0.6666666666666666 frozenset({5}) --> frozenset({2, 3}) conf: 0.6666666666666666 frozenset({3}) --> frozenset({2, 5}) conf: 0.6666666666666666 frozenset({2}) --> frozenset({3, 5}) conf: 0.6666666666666666 rules: [(frozenset({5}), frozenset({3}), 0.6666666666666666), (frozenset({3}), frozenset({5}), 0.6666666666666666), (frozenset({3}), frozenset({1}), 0.6666666666666666), (frozenset({1}), frozenset({3}), 1.0), (frozenset({5}), frozenset({2}), 1.0), (frozenset({2}), frozenset({5}), 1.0), (frozenset({3}), frozenset({2}), 0.6666666666666666), (frozenset({2}), frozenset({3}), 0.6666666666666666), (frozenset({5}), frozenset({2, 3}), 0.6666666666666666), (frozenset({3}), frozenset({2, 5}), 0.6666666666666666), (frozenset({2}), frozenset({3, 5}), 0.6666666666666666)] 示例:发现毒蘑菇的相似毒蘑菇的相似特征 在结果中搜索包含有毒特征值2的频繁项集: frozenset({'2', '93'}) frozenset({'85', '2'}) frozenset({'2', '36'}) frozenset({'2', '59'}) frozenset({'2', '34'}) frozenset({'2', '28'}) frozenset({'2', '23'}) frozenset({'2', '63'}) frozenset({'2', '67'}) frozenset({'53', '2'}) frozenset({'2', '90'}) frozenset({'2', '39'}) frozenset({'2', '86'}) frozenset({'2', '76'}) ```