python 关联规则(Association Rules)理论、Apriori算法案例实战

关联规则中三个重要知识点

某家水果店的订单清单如下:

购物单号购买的水果
1苹果、香蕉、梨
2苹果、香蕉、梨、芒果
3香蕉、梨、芒果、水蜜桃
4苹果、芒果
5苹果、水蜜桃

支持度:百分比数,表示一个商品组合出现的次数与总次数之间的比值,支持度越高,说明组合出现的概率越高。
Support(A) = N(A)/N
'苹果’的支持度为:Support(A) = 4/5 = 0.8
‘苹果、香蕉’的支持度为:Support(AB) = 2/5 = 0.4

置信度:条件概率,指购买了一个商品组合后,购买另一个组合的
概率。
Cofident(A=>B) = N(AB)/N(A) = P(AB)/P(A)
‘苹果=>香蕉’的置信度: Cofident(A=>B) = 2/4 = 0.5
'香蕉=>梨’的置信度:Cofident(B=>C) = 3/3 = 1

提升度:一个商品组合出现,对另一个商品组合出现概率的提升。
当提升度大于1,代表有提升;
当提升度等于1,代表没提升也没有下降;
当提升度小于1,代表下降。
lift(A=>B)= Cofident(A=>B)/Support(B)
‘苹果=>香蕉’的置信度:lift(A=>B) = 0.5/0.6<1

Apriori算法原理

Apriori算法原理

Apriori算法原理就是查找频繁项集(frequent itemset)的过程。
频繁项集:支持度大于等于最小支持度(Min Support)的项集。
非频繁项集:支持度小于最小支持度的项集。

Apriori算法流程

step1:k=1,计算k项集的支持度;
step2:提出支持度小于最小支持度的项集;
step3:如果项集为空,将k-1项设置为最终结果。
否则k=k+1,重复step1-step3.

Apriori算法案例

将上述案例用ID来表示,苹果、香蕉、梨、芒果、水蜜桃分别用商品ID1,2,3,4,5来表示。

购物单号购买的水果
11、2、3
21、2、3、4
32、3、4、5
41、4
51、5

1.计算k=1的支持度。

水果项集支持度
14/5
23/5
33/5
43/5
52/5

2.设定最小阈值为0.5,进行剔除:

水果项集支持度
14/5
23/5
33/5
43/5

3.计算k=2的支持度。

水果项集支持度
1、22/5
1、32/5
1、42/5
2、33/5
2、42/5
3、42/5

4.进行剔除:

水果项集支持度
2、33/5

得到k=2的频繁项集{2、3},{香蕉、梨}的组合

Apriori算法应用

数据集为:Marker_Basket(购物篮)
数据来源:https://www.kaggle.com/dragonheir/basket-optimisation
1.efficient_apriori

#导入efficient_apriori
import pandas as pd
from efficient_apriori import apriori
from time import clock

data = pd.read_csv('./Market_Basket_Optimisation.csv',header= None)
#对数据进行预处理,将数据处理成transactions
start = clock()
transactions = []
for i in range(data.shape[0]):
    temp = set()
    for j in range(data.shape[1]):
        if str(data.values[i,j]) == 'nan':
            continue
        temp.add(str(data.values[i,j]))
    transactions.append(temp)
#设置最小支持度0.04,最小置信度0.02
itemsets,rules = apriori(transactions,min_support = 0.04,min_confidence = 0.02)
end = clock()
print('频繁项集:',itemsets)
print('关联规则:',rules)
print('运行时间:',end-start)

2.mlxtend

#导入mlxtend
from mlxtend.frequent_patterns import apriori
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import association_rules
import pandas as pd
from time import clock
data = pd.read_csv('./Market_Basket_Optimisation.csv',header= None)

start  = clock()
transactions = []
for i in range(data.shape[0]):
    temp = set()
    for j in range(data.shape[1]):
        if str(data.values[i,j]) == 'nan':
            continue
        temp.add(str(data.values[i,j]))
    transactions.append(temp)

#one-hot编码
te =  TransactionEncoder()
te_ary = te.fit(transactions).transform(transactions)
transactions_ml = pd.DataFrame(te_ary,columns = te.columns_)

#设置最小支持度0.03
itemsets = apriori(transactions_ml,min_support = 0.03,use_colnames=True)
#从大到小排序
itemsets = itemsets.sort_values(by = 'support',ascending = False)
#设置最小提升度1.1
rules = association_rules(itemsets,metric = 'lift',min_threshold = 1.1)
#从大到小排序
rules = rules.sort_values(by = 'lift',ascending = False)

end = clock()
print('频繁项集:',itemsets)
print('关联规则:',rules)
print('运行时间:',end-start)
  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Apriori算法是一种在数据挖掘中常用的关联规则挖掘算法,也是Python中常用的算法之一。该算法的思想是通过扫描数据集来寻找频繁项集,然后利用频繁项集构建关联规则,从而发现项集之间的关联关系。 在Python中,可以使用一些第三方库来实现Apriori算法,比如`apyori`和`mlxtend`等。这些库提供了方便的函数和类来帮助我们实现关联规则挖掘,例如`apriori()`函数可以计算频繁项集,`association_rules()`函数可以生成关联规则,具体实现可以参考库的文档和示例代码。 总之,Python中的Apriori算法是一个非常有用的工具,可以帮助我们挖掘数据集中隐藏的关联规律,从而帮助我们做出更加准确的预测和决策。 ### 回答2: Apriori算法是一种常用的基于频繁项集挖掘的关联规则算法,它是一种从数量庞大的数据集中寻找有意义的关联关系、关联规则的方法,主要用于在大规模数据中寻找关联性强的事物之间的相关关系。Python作为一种灵活性和性能都较为优异的开发语言,提供了多种开源库和工具,可以方便地实现Apriori算法Apriori算法的核心是通过迭代和剪枝将一个庞大的数据集合缩小成一个关联规则集合,从而避免了对所有数据进行大量计算的情况。简单的说,Apriori算法首先搜索数据集中的所有可能项集,然后计算每个项集的支持度(项集在全部数据集中出现的概率),根据设定的最小支持度阈值,找出所有支持度大于等于最小支持度阈值的频繁项集。然后在频繁项集中,寻找元素数目更多的集合,从而得到更多的关联规则Python中有多个库可以实现Apriori算法,比如pymining、mlxtend在最近几年发展得比较迅速。其中,谷歌公司的colaboratory是一个流行的python编程平台,提供了一些例子和代码模板,允许开发者免费使用云端的Python编程环境。 实现Apriori算法的具体步骤如下: 1. 获取事务数据,并进行预处理和清洗数据(例如去掉重复数据、去除噪声数据等) 2. 确定频繁项集的最小支持度阈值 3. 生成所有的频繁项集,并计算它们的支持度 4. 剪枝不满足最小支持度阈值的项集,得到更小的频繁项集 5. 递归执行步骤4,得到所有的频繁项集,并根据频繁项集生成关联规则。根据规则兴趣度评估方法(例如置信度、支持度、提升度等),输出满足规则兴趣度的用户真实生活关联关系。 Apriori算法是一种高效、实用、灵活的数据挖掘算法,尤其适用于对关联规则挖掘中涉及的项目数目进行优化和提升,也可运用于市场定位、消费行为分析等实际场景,是非常有实际价值的算法。 ### 回答3: Python关联规则Apriori算法是一种用于数据挖掘的算法,用于寻找频繁出现的关联规则。此算法名称Apriori源于其关联规则理论基础中所用的先验假定,即频繁项集的所有子集也是频繁项集。 该算法的主要优点在于其能够处理大规模数据,同时由于其不需要先验知识,也可以应用于多个领域进行分析。其实现遵循三个基本步骤: 1. 找到频繁项目集:在第一阶段,该算法通过扫描数据集并计算项目集的支持度(支持度是指某项发生的频率)确定频繁项目集。 2. 构建关联规则:在第二阶段,该算法构建关联规则,根据先前找到的频繁项目集,使用置信度 (置信度是指如果同时包含两个项,那么这两个项之间有多大的可能性同时出现)计算各种规则的可信度,确定频繁项集内部的关联规则。 3. 评估规则:在第三阶段,该算法评估各个规则的可信度,并从中选择最优的规则。 Apriori算法的核心思想在于通过支持度和置信度描述数据中不同项之间的关联关系,从而发现一些潜在的规律,同时为后续的应用提供统计分析依据。在使用该算法前,必须先对大量数据进行预处理和过滤,以减少分析时间和保证数据质量。 Python关联规则Apriori算法的主要应用包括市场销售分析、网站访问分析、医学研究以及社交网络等领域。该算法通过发现大量的关联规则,为业务决策提供了很多数据参考,同时也为数据分析人员提供了更加高效的工具,以优化数据分析流程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝翔厨师长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值