关联分析--Apriori(11)

频繁项集--同时出现频率较高的特征集合

关联规则--不同特征间关系较强

支持度--项集在数据集中所占比例

置信度--关联规则的支持度与单个特征支持度的比值

举个例子,假设NBA全明星连续五日的观众投票最佳阵容如下:

DatePGSGSFPF C 
2.1库里哈登詹姆斯字母哥约基奇
2.2欧文哈登杜兰特浓眉约基奇
2.3库里东契奇杜兰特浓眉恩比德
2.4欧文哈登詹姆斯字母哥恩比德
2.5欧文哈登杜兰特字母哥约基奇

哈登的支持度=4/5;杜兰特的支持度=3/5

频繁项集{欧文、哈登}的支持度=3/5

那么有哈登,则有欧文这条关联规则的置信度=(3/5)/(4/5)=3/4

Apriori原理:如果某个项集是频繁的,那么他的子集也是频繁的;如果某个项集是非频繁的,那么他的超集也是非频繁的。例如{哈登、欧文}是频繁的,那么哈登、欧文都是频繁的;而浓眉是非频繁的,那么浓眉和所有人的搭配都是非频繁的。

Apriori算法的代码实现如下:

#合并小项集,生成k元素项集
def aprioriGen(Lk, k):
    retList = []
    lenLk = len(Lk)
    for i in range(lenLk):
        for j in range(i+1, lenLk): 
            L1 = list(Lk[i])[:k-2]; L2 = list(Lk[j])[:k-2]
            L1.sort(); L2.sort()
            if L1==L2:
                retList.append(Lk[i] | Lk[j])
    return retList

def apriori(dataSet, minSupport = 0.5):
    #输入:数据集、最小支持度
    C1 = createC1(dataSet)    #生成只有一个元素的项集
    D = map(set, dataSet)
    L1, supportData = scanD(D, C1, minSupport)    #频繁项集、支持率
    L = [L1]
    k = 2
    while (len(L[k-2]) > 0):
        Ck = aprioriGen(L[k-2], k)
        Lk, supK = scanD(D, Ck, minSupport)
        supportData.update(supK)
        L.append(Lk)
        k += 1
    return L, supportData
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值