使用Apriori算法进行关联分析

本文详细介绍了Apriori算法在关联分析中的应用,包括频繁项集生成、关联规则挖掘以及支持度和可信度的概念。在实践中,针对代码运行错误进行了调整,使得程序能正常运行。通过设定不同支持度阈值,可以筛选出满足条件的频繁项集,并利用这些项集生成关联规则。虽然Apriori算法易于实现,但在大数据集上效率较低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要内容:Apriori算法、频繁项集生成、关联规则生成、投票中的关联规则发现

缺点:是在大数据集上可能较慢。

当寻找频繁项集时,有两个概念比较重要:支持度可信度

表1 一个来自Hole Foods天食品店的简单交易清单
交易号码 商品
0 豆奶, 莴苣
1 莴苣,尿布,葡萄酒,甜菜
2 莴苣,尿布,葡萄酒,橙汁
3 莴苣,豆奶,尿布,葡萄酒
4

莴苣,豆奶,尿布,橙汁

支持度:一个项集的支持度(support)被定义为数据集中包含该项集的记录占总记录的比例。从表1 可以看出 项集 {豆奶} 的支持度为 4/5; 而在 5 条交易记录中 3 条包含 {豆奶,尿布},因此 {豆奶,尿布} 的支持度为 3/5.

可信度或置信度(confidence):是针对一条诸如尿布−−>葡萄酒尿布−−>葡萄酒的关联规则来定义的,这条规则的可信度被定义为“ 支持度({尿布,葡萄酒})  /  支持度({尿布})”。在表1 中可以发现  {尿布,葡萄酒} 的支持度是 3/53/5, {尿布} 的支持度为 4/54/5, 所以关联规则 “尿布 --> 葡萄酒”的可信度为 3/4=0.753/4=0.75, 意思是对于所有包含 "尿布"的记录中,该关联规则对其中的 75% 记录都适用。

因为网上的代码和原著的代码运行后会报一些错误,所以本文修改了两个地方,将C1和D都强制转换为list类型,程序才能正常运行。

    # 构建第一个候选项集列表C1
    C1 = list(createC1(myDat))
    # 构建集合表示的数据集 D
    D = list(map(set, myDat))

apriori.py


def loadDataSet():
    '''创建一个用于测试的简单的数据集'''
    return [ [ 1, 3, 4 ], [ 2, 3, 5 ], [ 1, 2, 3, 5 ], [ 2, 5 ] ]

def createC1( dataSet ):
    '''
    构建初始候选项集的列表,即所有候选项集只包含一个元素,
    C1是大小为1的所有候选项集的集合
    '''
    C1 = []
    for transaction in dataSet:
        for item in transaction:
            if [ item ] not in C1:
                C1.append( [ item ] )
    C1.sort()
    return map( frozenset, C1 )

def scanD( D, Ck, minSupport ):
    '''
    计算Ck中的项集在数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值