python数据分析 - 关联规则Apriori算法

简介: python数据分析 - 关联规则Apriori算法

导语


关联规则


是反映一个事物与其他事物之间的相互依存性和关联性


常用于实体商店或在线电商的推荐系统:通过对顾客的购买记录数据库进行关联规则挖掘,最终目的是发现顾客群体的购买习惯的内在共性,例如购买产品A的同时也连带购买产品B的概率,根据挖掘结果,调整货架的布局陈列、设计促销组合方案,实现销量的提升,最经典的应用案例莫过于<啤酒和尿布>。关联规则分析中的关键概念包括:支持度(Support)、置信度(Confidence)与提升度(Lift)。


支持度(support)


支持度 (Support)支持度是两件商品( X ⋂ Y ) (X \bigcap Y)(X⋂Y)在总销售笔数(N)中出现的概率,即A与B同时被购买的概率

1687259223436.png

举例说明


比如某超市2016年有100w笔销售,顾客购买可乐又购买薯片有20w笔,顾客购买可乐又购买面包有10w笔


  • 可乐和薯片的关联规则的支持度是:20%
  • 可乐和面包的支持度是10%

置信度(confidence)


置信度是购买X后再购买Y的条件概率。简单来说就是交集部分Y在X中比例,如果比例大说明购买X的客户很大期望会购买Y商品


1687259336542.png

举例说明


某超市2016年可乐购买次数40w笔,购买可乐又购买了薯片是30w笔,顾客购买可乐又购买面包有10w笔


  • 购买可乐又会购买薯片的置信度是75%
  • 购买可乐又购买面包的置信度是25%

提升度(lift)


提升度表示先购买X对购买Y的概率的提升作用,用来判断规则是否有实际价值,即使用规则后商品在购物车中出现的次数是否高于商品单独出现在购物车中的频率


1687259362149.png

举例说明:


可乐和薯片的关联规则的支持度是20%,购买可乐的支持度是3%,购买薯片的支持度是5%

  • 提升度是1.33

{X→Y}的提升度大于1,这表示如果顾客购买了商品X,那么可能也会购买商品Y;而提升度小于1则表示如果顾客购买了商品X,那么不太可能再购买商品Y


有这三个指标,如何选择商品的组合,是需要对支持度,置信度,提升度综合指标来看待商品组合。没有固定的数值衡量


mlxtend实现Apriori算法


数据集选择:Grocery Store Data Set


数据集为10000多个购买商品的订单。该数据集包含11商品:果酱、麦琪、糖、咖啡、奶酪、茶、波恩维塔、玉米片、面包、饼干和奶。


import pandas as pd
data=pd.read_csv('GroceryStoreDataSet.csv',names=['products'],header=None)
data.head(10)

e1ea4f2d2518442e92599d62e4b890cf.png

data=list(data['products'].apply(lambda x:x.split(',')))
data

6dc039e012564eb9a67bc7733d9dd157.png

转换数据类型TransactionEncoder类似于独热编码,每个值转换为一个唯一的bool值)


from mlxtend.preprocessing import TransactionEncoder
d=TransactionEncoder()
d_data=d.fit(data).transform(data)
df=pd.DataFrame(d_data,columns=d.columns_)
df

TransactionEncoder类似于独热编码,每个值转换为一个唯一的bool值)


求支持度


from mlxtend.frequent_patterns import apriori
df1=apriori(df,min_support=0.01,use_colnames=True)
df1.sort_values(by='support',ascending=False)

669f2f4f3b664d7d88a55433e6d0c20c.png


求置信度与提升度


association_rules方法判断置信度,这里提取confidence大于0.9的


from mlxtend.frequent_patterns import association_rules
association_rule = association_rules(df1,metric='confidence',min_threshold=0.9)

64538985cb004c0596b089be7289970e.png


列中的columns参数含义如下:

  • antecedents:商品X组合
  • consequents:商品Y组合
  • 购买关联的关系是{X -> Y}


antecedent support:商品X组合支持度

consequent support:商品Y组合支持度

support:{X -> Y}支持度

confidence:{X -> Y}置信度

lift:{X -> Y}提升度

leverage:规则杠杆率,表示当商品X组合与商品Y组合独立分布时,商品X组合与商品Y组合一起出现的次数比预期多多少。

conviction:{X -> Y}确信度,与提升度类似,但用差值表示。


确信度值越大,则商品X组合与商品Y组合的关联性越强。 以上三个值都是越大关联强度也就越大,inf表示无穷大。

注意是商品组合


单个商品与单个商品之间的关系


筛选商品组合,选出只有一个商品的antecedents,和consequents。


association_rule['X_length']=association_rule['antecedents'].apply(lambda x:len(x))
association_rule['Y_length']=association_rule['consequents'].apply(lambda x:len(x))
association_rule=association_rule[(association_rule['X_length']==1) & (association_rule['Y_length']==1) ]

7c0c8e91999945049b09926adb0bc43b.png


也可以单独对antecedents的商品组合,分析,观察antecedent support值,找出关联性最大的情况

相关文章
|
1月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
1月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
117 5
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
187 26
|
2月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
316 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
185 0
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
219 0
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
831 4
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
250 2
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
341 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
1090 4
数据分析的 10 个最佳 Python 库

热门文章

最新文章

推荐镜像

更多