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值,找出关联性最大的情况

相关文章
|
9天前
|
数据挖掘 PyTorch TensorFlow
|
10天前
|
数据采集 数据挖掘 数据处理
使用Python和Pandas进行数据分析基础
使用Python和Pandas进行数据分析基础
30 5
|
10天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
46 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
7天前
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【9月更文挑战第12天】决策树算法作为机器学习领域的一颗明珠,凭借其直观易懂和强大的解释能力,在分类与回归任务中表现出色。相比传统统计方法,决策树通过简单的分支逻辑实现了数据的精准分类。本文将借助Python和scikit-learn库,以鸢尾花数据集为例,展示如何使用决策树进行分类,并探讨其优势与局限。通过构建一系列条件判断,决策树不仅模拟了人类决策过程,还确保了结果的可追溯性和可解释性。无论您是新手还是专家,都能轻松上手,享受机器学习的乐趣。
22 9
|
7天前
|
数据采集 传感器 数据可视化
利用Python进行数据分析与可视化
【9月更文挑战第11天】在数字化时代,数据已成为企业决策和科学研究的关键。本文将引导读者了解如何使用Python这一强大的工具进行数据分析和可视化,帮助初学者理解数据处理的流程,并掌握基本的可视化技术。通过实际案例,我们将展示如何从原始数据中提取信息,进行清洗、处理,最终以图形方式展现结果,使复杂的数据变得直观易懂。
|
8天前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
22 5
|
8天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
22 5
|
7天前
|
机器学习/深度学习 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的入门指南
【9月更文挑战第11天】本文旨在为初学者提供一条清晰的道路,通过Python探索数据科学的奇妙世界。我们将从基础语法讲起,逐步深入到数据处理、可视化以及机器学习等高级话题。文章不仅分享理论知识,还将通过实际代码示例,展示如何应用这些知识解决实际问题。无论你是编程新手,还是希望扩展技能的数据分析师,这篇文章都将是你宝贵的资源。
|
13天前
|
存储 算法 大数据
Apriori算法和Eclat算法差异
Apriori算法和Eclat算法差异
|
17天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【9月更文挑战第2天】数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
44 5