数据挖掘 Apriori与Fp-growth 频繁项集挖掘与关联规则分析

一、任务内容

(1)了解Groceries_dataset.csv中事务集的属性信息,根据每个用户每天的购买记录构造事务(比如用户1000在2015年3月15日对应的事务为{‘sausage’,’whole milk’,’semi-finished bread’,’yogurt’}),然后按照用户ID递增,时间递增的方式对事务进行排序;

(2)选择事务集中前100条事务,选择合适的支持度阈值,使用Apriori算法和FP-growth算法挖掘频繁项集(推荐使用mlxtend包的apriori和fpgrowth函数),并对比apriori算法和fpgrowth算法的时间复杂度;

(3)重复步骤(3),依次选择前500条,前1000条事务,对比apriori算法和fpgrowth算法的时间复杂度;

(4)使用前100条事务时,选择合适的置信度阈值,利用挖掘到的频繁项集生成强关联规则(推荐使用mlxtend包的association_rules函数)。然后使用提升度、全置信度、最大置信度、Kluc度量和余弦度量评估这些强关联规则。

二、实现过程

1. 了解Groceries_dataset.csv中事务集的属性信息,根据每个用户每天的购买记录构造事务,然后按照用户ID递增,时间递增的方式对事务进行排序;

打开Groceries_dataset.csv文件,如下图所示:

 观察发现共有三列,分别为会员ID,时间和购买商品,每一行只有一种商品。需要根据ID和时间进行合并,生成事务集。

编写函数loadDataset读入数据并进行合并、转化为二元表:读入.csv文件,使用df.groupby()将数据按ID和时间分组合并,提取合并后grouped['itemDescription']作为dataset;使用mlxtend包中的TransactionEncoder将list转化为dataframe类型的二元表,输出如下图所示:

输出显示[14963 rows x 167 columns],说明该数据集中商品种类共167种,共有14963条事务。

相关代码如下所示:

def loadDataset():  
    csv_file = 'Groceries_dataset.csv'  # 用你的数据集文件名替换  
  
    df = pd.read_csv(csv_file)  
  
    # 将数据按ID和时间分组合并  
    grouped = df.groupby(['Member_number', 'Date'])['itemDescription'].apply(list).reset_index()  
    merged_dataset = grouped['itemDescription'].tolist()  
    # print(merged_dataset)  
  
    Encoder = TransactionEncoder()  
    encoded_data = Encoder.fit_transform(merged_dataset)  
    df_encoded = pd.DataFrame(encoded_data, columns=Encoder.columns_)  
    # pd
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值