天池案例-产品关联分析
作者:互联网
1 案例描述
赛题以购物篮分析为背景,要求选手对品牌的历史订单数据,挖掘频繁项集与关联规则。通过这道赛题,鼓励学习者利用订单数据,为企业提供销售策略,产品关联组合,为企业提升销量的同时,也为消费者提供更适合的商品推荐。
说明:
1)频繁项集、关联规则的计算会用到支持度、置信度、提升度等指标,
2)频繁项集:即大于最小支持度的商品或商品组合
3)关联规则:在频繁项集中,满足最小置信度,或最小提升度的推荐规则
效果:
2 代码详情
# %load 赛题2.py
import pandas as pd
import time
import matplotlib.pyplot as plt
from matplotlib import font_manager
# font_manager.fontManager.addfont('./SimHei.ttf')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置汉字字体,优先使用黑体
plt.rcParams['font.size'] = 12 # 设置字体大小
plt.rcParams['axes.unicode_minus'] = False # 设置正常显示负号
# Step1 数据加载
df_order = pd.read_csv('./order.csv', encoding='gbk')
# Step2 数据探索
df_order['订单日期'] = pd.to_datetime(df_order['订单日期']) # 将原表内订单日期转化为pandas日期格式
# Step3 合并该天内该客户购买的所有产品
df_order = df_order.groupby(['客户ID', '订单日期'])['产品名称'].unique() # 探索是否存在同一订单日期且客户ID也相同的情况,若存在则合并该天内该客户购买的所有产品
# Step4 将所有交易追加到同一个交易列表中
transactions = [] # 将所有交易追加到同一个交易列表中,每一个交易是同一个客户同一天购买的所有产品的集合
for value in df_order:
transactions.append(list(value))
# Step 5 采用efficient_apriori算法挖掘频繁项集和频繁规则,单个transaction定义为同一天内同一客户ID购买的所有产品
from efficient_apriori import apriori
start = time.time()
itemsets, rules = apriori(transactions, min_support=0.03, min_confidence=0.05)
print('频繁项集:', itemsets)
print('关联规则:', rules)
end = time.time()
print("用时:", end - start)
# Step 6 绘制频繁项集的条形图,横坐标为apriori算法输出的频繁项集,纵坐标为相应的频数
itemsets_产品 = [] # 获取横坐标,频繁项集产品名称的列表
itemsets_频数 = [] # 获取纵坐标,频繁项集产品名称出现的频数的列表
for key in itemsets.keys():
df1 = itemsets[key]
for key in df1:
itemsets_产品.append(key)
itemsets_频数.append(df1[key])
# Step 7 将横坐标转化为字符串形式
itemsets_产品str = [] # 将横坐标转化为字符串形式
for i in itemsets_产品:
itemsets_产品str.append(','.join(list(i)))
# Step 8 做出频繁项集频数分布柱状图
plt.bar(itemsets_产品str, itemsets_频数)
plt.xlabel('频繁项集_产品名称', fontsize=14) # 设置X轴标签
plt.ylabel('频繁项集_出现频数', fontsize=14) # 设置Y轴标签
plt.title('频繁项集频数分布柱状图', fontsize=18) # 为柱状图添加标题
plt.xticks(rotation=90, fontsize=10) # 设置X轴内容竖排显示
for a, b in zip(itemsets_产品str, itemsets_频数): # 设置数据标签可见
plt.text(a, b + 0.005, str(b), ha='center', va='bottom', fontsize=8)
plt.show()
3 归纳总结
标签:频数,plt,关联,频繁,案例,天池,项集,order,itemsets 来源: https://blog.csdn.net/weixin_41175904/article/details/118677802