Apriori算法使用到以下哪些概念(),apriori算法的基本过程
Apriori算法中的几个重要概念A-B:
支持度:P (A B)表示A和B同时出现的概率,没有先后顺序。
或者置信度:P(BA)表示A发生时B发生的概率,有序列。
P(BA)=P(A^B)/P(A)
频繁项集:满足最小支持阈值的事件集。如果一个事件中有K个元素,则它是一个频繁K项集。频繁项集是指经常同时出现的元素的集合。
Apriori算法原理AprioriApriori原理:如果一个项集是频繁项集,那么它的所有子集都是频繁的。
也就是说,如果{0,1}是频繁的,那么{0},{1}也一定是频繁的。
Apriori算法步骤发现频繁项集(循环,从A到G生成候选集后,将返回扫描元素,从生成频繁K项集到生成频繁K-1项集后循环)
A.扫描元素
B.计算支持度
C.统计筛选
d .生成频繁项集
E.自链接
F.修剪
G.生成候选集生成关联规则Apriori算法原理(python版本)class Apriori:@ classmethoddef cache(cls,dataSet,min support=0.5):c1=cls . create C1(dataSet)#聚合数据集,满足scanD # d=map (set,dataset) L1,supportdata=cls.scand (dataset,C1,minsupport) L=[L1] #原L1中的每个项集包含一个元素,新生成的#项集应该包含两个元素。因此,k=2k=2 while(len(l[k-2])0):CK=cls . apriori gen(l[k-2],k) lk,supk=cls.scand (dataset,CK,Min) #将新项集的支持度数据添加到原总支持度字典中。supportData.update(supK) #将满足最低支持度要求的项集添加到L L.append(Lk) #新生成的项集中的元素个数要不断增加。k=1 #返回满足条件的所有频繁项集列表,所有候选集的支持度信息返回l,supportdata @ classmethoddef创建C1 (self,dataset): 建立初始候选集列表,即所有候选集只包含一个元素,C1是集合 C1=[]对于数据集中的事务:对于事务中的项:如果不是[item]在C1: c1.append ([item]) c1.sort()返回map(冻结集,C1)@ classmethoddef apriogen(CLS Lk,K):“”从初始候选集的集合LK生成新一代候选集,K表示生成的新项目集包含的元素个数“”Ret list=[]len LK=len(LK)for I in range(len LK):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])Ret list Ck,min support): 计算数据集D(记录或事务)中CK项集的支持度,返回满足最小支持度的项集的集合,以及所有项集的支持度信息的字典。 ss CNT={ } l _ Ck=list(Ck)for tidin d:# for l _ Ck中can的每个事务:#对于每个候选集can,检查它是否是事务的一部分#即候选can是否被if can的事务支持。is subset (tid): if sscnt。get(can)==none:sscnt[can]=1 else:ss CNT[can]=1 numItems=float(len(d))ret list=[]support data={ }对于ss CNT中的键:# support of each items set support=ss CNT[key]/numItems #将满足最小支持度的项集,如果support=min support:ret list . insert(0,key)else:# print(str(key) support: str(support),小于最小支持度: str(minSupport)) pass # summary
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。