#获取候选1项集,dataset是事务集,返回一个list,每个元素都是set集合
def create(D):
C1 = [] #候选1项集
for d in D: #事务集的每个特征词
for item in d: #事务的每个元素
if not[item] in C1: #若该元素是第一次出现
C1.append([item]) #加入到一项集中
C1.sort()
return list(map(frozenset,C1)) #冻结1项集使其内部元素不可改变并返回
#找出候选集中的频繁项集
def scanD(D,Ck,minSupport):
Cn = {} #记录每个候选项的个数
for d in D: #事务集的每个特征词
for can in Ck: #k项集的候选特征词
if can.issubset(d): #如果候选特征词是事务特征词的子集
Cn[can] = Cn.get(can,0) +1 #候选词对应的个数增加1
Lk=[] #频繁项集
Ln={} #频繁项集的支持度
for key in Cn: #每个候选特征词
if Cn[key]>=minSupport: #若支持度大于最小支持度
Lk.insert(0,key) #把大于最小支持度的候选词加入频繁集
Ln[key]=Cn[key] #频繁特征词对应的支持度
print(Ln) #输出频繁特征词和对应支持度
return Lk,Ln
def aprioriGen(Lk,k):
Ck1=[] #候选k+1项集C(k+1)
lenLk=len(Lk) #频繁集的个数
for i in range(lenLk):
文本挖掘apriori
最新推荐文章于 2023-07-02 16:47:46 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)