34. 购物数据关联规则分析#
34.1. 介绍#
本次挑战将尝试使用关联规则挖掘的方法,对购物篮数据进行分析,找出其中的频繁项集和关联规则。
34.2. 知识点#
数据集制作
数据预处理
Apriori 算法的应用
关联规则的生成
34.3. 挑战介绍#
挑战给出一个超市购物数据集,里面包含了 7500 条数据,每条数据为单个购物车数据。数据下载地址为:
wget -nc https://cdn.aibydoing.com/aibydoing/files/shopping_data.csv
34.4. 挑战内容#
挑战将使用 Apriori
算法对数据集进行关联规则分析,请找出符合最小支持度阈值为
0.05
的频繁项集,并计算出最小置信度阈值为
0.2
的关联规则。
挑战开始之前,你需要先打开终端,执行以下步骤安装 mlxtend 机器学习算法库。
pip install mlxtend
34.5. 挑战要求#
-
需要将代码保存到
Code
文件夹中,并以association.py
命名。 -
你需要将代码写在
def rule()
中,不能修改函数名。 -
挑战需要依次返回频繁项集和关联规则对应的 DataFrame。
-
测试时,需要使用
python
运行association.py
,避免出现无相应模块的情况。
34.6. 示例代码#
def rule():
### 补充代码 ###
return frequent_itemsets, association_rules # 返回频繁项集和关联规则对应的 DataFrame
特别注意:不能修改
rule()
函数名,且不能向
rule()
中添加参数。否则系统将无法正确评判结果。
参考答案 Exercise 34.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
○ 欢迎分享本文链接到你的社交账号、博客、论坛等。更多的外链会增加搜索引擎对本站收录的权重,从而让更多人看到这些内容。