- 今日知识
在正式开始本节案例的练习之前,我们先简单说明一下购物篮分析。
2.1 分析方法说明:购物篮分析
2.1.1 购物篮分析的概念
购物篮分析是关联分析的一种重要应用:通过发现顾客在一次购买行为中放入购物篮的不同商品之间的关联,研究客户的购买习惯,从而辅助零售企业制定营销策略。
本案例将使用最为经典的 Apriori 算法实现购物篮分析。
我们用 X->Y 表示关联规则,回顾一下 Apriori 算法的三个重要概念:
1)支持度(X->Y)表示同时购买 X、Y 的订单数占总订单数的比例,计算方式为:
2)置信度(X->Y)表示购买商品 X 的订单中同时购买商品 Y 的概率,计算方式为:
3)提升度(X->Y)表示购买商品时,商品 X、Y 的相关性,计算方式为:
当提升度(X->Y)大于 1 时,说明商品 X 买得越多,Y 也会买得越多;等于 1 意味着商品 X 和 Y 之间没有关系;小于 1 则意味着购买 X 反而会减少 Y 的销量。
你可能会认为上边的公式和前边案例课中的讲解存在出入,其实没有,它们是一种公式的不同形式。
2.1.2 购物篮分析的作用
购物篮分析可以协助制定商品的捆绑销售策略,比如:规划附属商品降价销售,以便刺激主体商品销售。
还可以指导商品的摆放,比如:经常同时购买的商品可以摆得近一点,以便刺激这些商品一起销售。
2.1.3 购物篮分析的步骤
1)设置最小支持度、最小置信度以及最小提升度;
2)调用 apriori() 函数,获取强关联规则;
3)对支持度或置信度较大的强关联规则进行分析。
分析方法回顾完毕,接下来请完成本次案例的分析工作。
3. 案例分析
根据数据分析的四个步骤,请你试着写出对应的代码。
3.1 明确目标
步骤提示:对数据进行概览,你可以查看前几行或后几行数据,看看数据是否符合我们的分析需求。
知识列表:在这个步骤中,你可能用到的知识点有:
import pandas as pd
# 读取【StationeryOrder.csv】文件数据
data = pd.read_csv('./工作/StationeryOrder.csv', encoding='gbk')
# 查看数据的前 10 行信息
data.head(10)
通过预览【StationeryOrder.csv】文件数据, 发现数据中仅有的id、文具列数据刚好可以用来做关联分析。
而我们分析的是顾客在一次购买行为中放入购物篮中不同商品之间的关联,因此适合 Apriori 算法计算的数据形式为:按照 id 进行分组聚合的文具数据。
明确了目标,接下来对销售数据进行处理。
3.2 数据处理
步骤提示:处理数据前,文具列数据为字符串;处理后,转变为按照id分组聚合的列表数据。
知识列表:在这个步骤中,你可能用到的知识点有:
步骤实现:请你对读取到的销售数据进行清洗,并处理为适合 Apriori 算法计算的格式。
我们要将文具列数据由字符串转换成列表,这是其中的一种思路,你可以参考:👇
先将“字符串”格式的文具列数据,转变为“包含单个字符串的列表”格式。再使用 df.groupby().sum()将同一 id 的“包含单个字符串列表”数据聚合为“包含多个字符串列表”格式的数据。
# 定义函数,将数据类型转换成列表
def conversion_data(s):
return [s]
# 将“文具”列数据由“字符串”格式转变为“包含单个字符串的列表”格式
data['文具'] = data['文具'].agg(conversion_data)
# 将同一“id”的“包含单个字符串的列表”数据聚合为“包含多个字符串的列表”数据,并重置索引
new_data = data.groupby('id').sum().reset_index()
# 查看整理好的数据
new_data
借助 reset_index()重置索引,可以看到合并后的数据从原来的 40055 行变成了 9646 行。
说明我们已经将每一个文具数据整合成了顾客的每一次购买行为数据。
现在的数据可以导入 Apriori 算法进行关联分析。
3.3 数据分析
步骤提示:执行 Apriori 算法需要设置的参数包括数据集、最小支持度、最小置信度以及最小提升度。
1)通过设置最小支持度筛选频繁项集,即用户更有可能购买的商品;
2)通过设置最小置信度筛选强关联规则,即用户在买某商品的时候,更倾向或者更不倾向购买的另外一个商品;
3)通过设置最小提升度去除存在抑制关系的强关联规则,即用户在买某商品的时候,可能会继续购买的另外一个商品;
其中,这一次将强关联规则分为前件和后件两列数据呈现。
知识列表:在这个步骤中,你可能用到的知识点有:
步骤实现:请你使用 Apriori 算法进行计算,并从返回结果中提取数据。
能够成功使用 Apriori 算法进行计算并提取数据吗?看看我的操作步骤吧。
首先,从 apyori 模块中导入 apriori 函数。
接着,设置 apriori 函数的参数:数据集以及最小支持度、最小置信度以及最小提升度。
本案例的数据集就是刚刚整理好的数据,选取的最小支持度、最小置信度以及最小提升度参数分别为:0.02、0.45、1,回头你也可以根据自己的需求,试着