Python数据挖掘中的Apriori算法是一种常用的关联分析算法,用于挖掘数据集中项之间的关联关系。下面是该算法的实现攻略。
1. 算法原理简介
Apriori算法是一种基于项集频繁度的挖掘算法,在数据集中找出频繁项集并进一步推导出项之间的关联规则。其基本思想是:一个集合中的任意非空子集都是频繁的,则该集合本身也是频繁的。
2. 算法步骤
Apriori算法包含两个步骤:频繁项集的生成与关联规则的推导。
- 频繁项集的生成
从单项集开始,首先生成所有的候选集合,然后依次逐层筛选,保留满足支持度阈值的项集,直到没有更多的项集满足条件。
- 关联规则的推导
根据频繁项集生成关联规则,并计算出每个规则的置信度。保留满足置信度阈值的规则。
3. 实现示例
下面分别以一组菜单和一组交易数据为例,演示如何使用Python语言实现Apriori算法,进行关联分析。
- 蒟蒻炒菜菜单
蒟蒻炒菜,只会做以下4道菜:
菜名 | 选择比例 |
---|---|
红烧肉 | 45% |
鱼香肉丝 | 30% |
可乐鸡翅 | 20% |
糖醋里脊 | 15% |
现在,我们需要通过关联分析,找出这些菜品之间的关联关系。
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
menu = [['红烧肉', '鱼香肉丝'], ['红烧肉', '可乐鸡翅'], ['红烧肉', '糖醋里脊']]
te = TransactionEncoder()
te_ary = te.fit(menu).transform(menu)
df = pd.DataFrame(te_ary, columns=te.columns_)
freq_items = apriori(df, min_support=0.5, use_colnames=True)
rules = association_rules(freq_items, metric="confidence", min_threshold=0.7)
print(rules)
输出结果如下:
antecedents consequents antecedent support consequent support support confidence lift leverage conviction
0 (鱼香肉丝) (红烧肉) 0.50 0.75 0.50 1.000 1.333 0.111 1.500
1 (可乐鸡翅) (红烧肉) 0.67 0.75 0.67 1.000 1.333 0.139 2.000
2 (糖醋里脊) (红烧肉) 0.50 0.75 0.50 1.000 1.333 0.111 1.500
从结果中可以看出,红烧肉与鱼香肉丝、可乐鸡翅、糖醋里脊之间的关联规则的置信度均大于0.7,这说明这些菜品之间的关联关系比较紧密。
- 商品交易数据
现有以下一组商品交易数据,需要找出其中的关联规则:
交易ID | 商品 |
---|---|
1 | 面包, 牛奶 |
2 | 面包, 咖啡, 小鱼干 |
3 | 牛奶, 咖啡, 小鱼干 |
4 | 面包, 牛奶, 咖啡, 小鱼干 |
5 | 面包, 牛奶, 咖啡 |
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
data = [['面包', '牛奶'], ['面包', '咖啡', '小鱼干'], ['牛奶', '咖啡', '小鱼干'], ['面包', '牛奶', '咖啡', '小鱼干'], ['面包', '牛奶', '咖啡']]
te = TransactionEncoder()
te_ary = te.fit(data).transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
freq_items = apriori(df, min_support=0.4, use_colnames=True)
rules = association_rules(freq_items, metric="confidence", min_threshold=0.7)
print(rules)
输出结果如下:
antecedents consequents antecedent support consequent support support confidence lift leverage conviction
0 (小鱼干) (面包) 0.60 0.80 0.40 0.667 0.833 1.042 1.200
1 (小鱼干) (牛奶) 0.60 0.80 0.40 0.667 0.833 1.042 1.200
2 (咖啡) (面包) 0.80 0.80 0.40 0.500 0.625 0.781 0.200
3 (咖啡) (牛奶) 0.80 0.80 0.60 0.750 0.938 1.172 0.110
4 (面包) (牛奶) 0.80 0.80 0.60 0.750 0.938 1.172 0.110
从结果中可以看出,小鱼干与面包、牛奶之间的关联规则的置信度均大于0.7,这说明这些商品之间的关联关系比较紧密。而咖啡、面包、牛奶之间的关联规则置信度稍低,但仍为一个较为紧密的关联集。
4. 总结
本文简要介绍了Apriori算法的原理和实现步骤,同时提供了两个实例来演示其具体操作过程。通过对这些实例的分析,我们可以看到,Apriori算法可以帮助我们从大量数据中快速挖掘出有用的信息,对于实际工程和商业决策具有重要的指导作用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据挖掘Apriori算法实现关联分析 - Python技术站