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

网友投稿 438 2022-08-27


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

关联规则Apriori算法

​​导语​​​​mlxtend实现Apriori算法​​

导语

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

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

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

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

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

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

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

提升度是1.33

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

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

mlxtend实现Apriori算法

数据集选择:​​Grocery Store Data Set​​

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

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

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

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

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

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

列中的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) ]

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何做接口自动化测试?接口自动化测试基本流程和思路
下一篇:springboot打包实现项目JAR包和依赖JAR包分离
相关文章

 发表评论

暂时没有评论,来抢沙发吧~