关联规则Apriori算法例子

前言

什么是AI?
The theory and development of computer systems able to perform tasks normally requiring human intelligence.(–Oxford Dictionary)
Using data to solve problems.(–cy)

支持度、置信度、提升度

1.支持度:是个百分比,指的是某个商品组合出现的次数与总次数之间的比例,支持度越高,代表这个组合出现的频率越大;
2.置信度:置信度(A→B)是个条件概念。指的是当你购买了商品A,会有多大的概率购买商品B;
3.提升度:商品A的出现,对商品B的出现概率提升的程度。提升度(A→B)=置信度(A→B)/支持度(B);
提升度的三种可能:提升度(A→B)>1:代表有提升;提升度(A→B)=1:代表有没有提升,也没有下降;提升度(A→B)<1:代表有下降。

举例

有下图这样一组订单:
在这里插入图片描述

from efficient_apriori import apriori

# 设置数据集
transactions = [('牛奶','面包','尿布'),
        ('可乐','面包', '尿布', '啤酒'),
        ('牛奶','尿布', '啤酒', '鸡蛋'),
        ('面包', '牛奶', '尿布', '啤酒'),
        ('面包', '牛奶', '尿布', '可乐')]
# 挖掘频繁项集和频繁规则
itemsets, rules = apriori(transactions, min_support=0.5,  min_confidence=1)
print("频繁项集:\n", itemsets)
print("关联规则:\n", rules)

频繁项集:
{1: {(‘牛奶’,): 4, (‘尿布’,): 5, (‘面包’,): 4, (‘啤酒’,): 3}, 2: {(‘尿布’, ‘牛奶’): 4, (‘尿布’, ‘面包’): 4, (‘牛奶’, ‘面包’): 3, (‘啤酒’, ‘尿布’): 3}, 3: {(‘尿布’, ‘牛奶’, ‘面包’): 3}}
关联规则:
[{牛奶} -> {尿布}, {面包} -> {尿布}, {啤酒} -> {尿布}, {牛奶, 面包} -> {尿布}]

 #看一下频繁项集
print(itemsets)
print(type(itemsets))

{1: {(‘牛奶’,): 4, (‘尿布’,): 5, (‘面包’,): 4, (‘啤酒’,): 3}, 2: {(‘尿布’, ‘牛奶’): 4, (‘尿布’, ‘面包’): 4, (‘牛奶’, ‘面包’): 3, (‘啤酒’, ‘尿布’): 3}, 3: {(‘尿布’, ‘牛奶’, ‘面包’): 3}}
<class ‘dict’>

for k,value in itemsets.items():#最前面的数字123代表商品组合数   分别代表123件商品的组合
    print(k,value)#{}括号里面又是():数字,()代表商品组合名称,:后面的数字代表()商品组合出现的次数
    #支持度小于0.5的已经被pass了,因为设置的min_support=0.5

1 {(‘牛奶’,): 4, (‘尿布’,): 5, (‘面包’,): 4, (‘啤酒’,): 3}
2 {(‘尿布’, ‘牛奶’): 4, (‘尿布’, ‘面包’): 4, (‘牛奶’, ‘面包’): 3, (‘啤酒’, ‘尿布’): 3}
3 {(‘尿布’, ‘牛奶’, ‘面包’): 3}

#看一下关联规则
print(rules)#关联规则是置信度和支持度都满足
#这里的意思就是说  {}里面的组合支持度 大于0.5    并且 {}->{}  前面括号对后面括号的置信度等于1(因为设置的置信度最小值是1  本身置信度最大值也是1print(type(rules))

[{牛奶} -> {尿布}, {面包} -> {尿布}, {啤酒} -> {尿布}, {牛奶, 面包} -> {尿布}]
<class ‘list’>

总结

(如果您发现我写的有错误,欢迎在评论区批评指正)。

当然,我可以为您提供一个关联规则Apriori算法案例。假设我们有一个超市的交易数据集,其中包含了一些顾客的购买记录。我们希望利用Apriori算法来找出顾客购买商品之间的关联规则。 输入数据集如下所示: Transaction ID Items 1 {牛奶, 面包, 小麦} 2 {牛奶, 面包, 鸡蛋} 3 {面包, 小麦, 鸡蛋} 4 {牛奶, 面包} 5 {牛奶, 小麦, 鸡蛋} 首先,我们需要确定最小支持度和最小置信度的阈值。然后,我们可以根据Apriori算法的步骤来进行关联规则的挖掘。 1. 首先,生成所有单个项的频繁项集。计算每个项的支持度,如果支持度大于最小支持度阈值,则将其作为频繁项集。 在我们的例子中,我们可以得到以下频繁项集: {牛奶},{面包},{小麦},{鸡蛋} 2. 接下来,生成包含两个项的候选项集。计算每个候选项的支持度,如果支持度大于最小支持度阈值,则将其作为频繁项集。 在我们的例子中,我们可以得到以下频繁项集: {牛奶, 面包},{牛奶, 小麦},{面包, 小麦},{面包, 鸡蛋} 3. 继续生成包含更多项的候选项集,计算支持度,并筛选出频繁项集。 在我们的例子中,我们可以得到以下频繁项集: {牛奶, 面包, 小麦},{牛奶, 面包, 鸡蛋} 4. 最后,根据频繁项集生成关联规则,并计算每个规则的置信度。如果置信度大于最小置信度阈值,则将其作为关联规则。 在我们的例子中,我们可以得到以下关联规则: {牛奶} -> {面包},{面包} -> {牛奶},{牛奶} -> {鸡蛋},{鸡蛋} -> {牛奶} 这些关联规则可以帮助超市了解顾客购买商品之间的关联关系,从而进行商品的搭配推荐或者促销活动的制定。 希望这个案例能够对您理解关联规则Apriori算法有所帮助!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值