35. 购物数据关联规则分析#
35.1. 知识点#
数据集制作
数据预处理
Apriori 算法的应用
关联规则的生成
35.2. 挑战介绍#
挑战给出一个超市购物数据集,里面包含了 7500 条数据,每条数据为单个购物车数据。数据下载地址为:
wget -nc https://cdn.aibydoing.com/hands-on-ai/files/shopping_data.csv
35.3. 挑战内容#
挑战将使用 Apriori 算法对数据集进行关联规则分析,请找出符合最小支持度阈值为 0.05
的频繁项集,并计算出最小置信度阈值为 0.2
的关联规则。
挑战开始之前,你需要先打开终端,执行以下步骤安装 mlxtend 机器学习算法库。
pip install mlxtend
35.4. 挑战要求#
需要将代码保存到
Code
文件夹中,并以association.py
命名。你需要将代码写在
def rule()
中,不能修改函数名。挑战需要依次返回频繁项集和关联规则对应的 DataFrame。
测试时,需要使用
python
运行association.py
,避免出现无相应模块的情况。
35.5. 示例代码#
def rule():
### 补充代码 ###
return frequent_itemsets, association_rules # 返回频繁项集和关联规则对应的 DataFrame
特别注意:不能修改 rule()
函数名,且不能向 rule()
中添加参数。否则系统将无法正确评判结果。
Solution to Exercise 35.1
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules as rules
def rule():
df = pd.read_csv("shopping_data.csv", header=None)
dataset = df.stack().groupby(level=0).apply(list).tolist()
te = TransactionEncoder() # 定义模型
te_ary = te.fit_transform(dataset) # 转换数据集
df = pd.DataFrame(te_ary, columns=te.columns_) # 将数组处理为 DataFrame
frequent_itemsets = apriori(df, min_support=0.05, use_colnames=True)
association_rules = rules(frequent_itemsets, metric="confidence", min_threshold=0.2) # 置信度阈值为 0.1
return frequent_itemsets, association_rules
如果你觉得这些内容对你有帮助,可以通过 微信赞赏码 或者 Buy Me a Coffee 请我喝杯咖啡。