第11章:使用Apriori算法进行关联分析(从频繁项集中挖掘关联规则)
生活随笔
收集整理的這篇文章主要介紹了
第11章:使用Apriori算法进行关联分析(从频繁项集中挖掘关联规则)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原理:
根據頻繁項集找關聯規則,如有一個頻繁項集{豆奶,萵苣},那么可能有一條關聯規則是豆奶->萵苣,即一個人購買了豆奶,則大可能他會購買萵苣,但反過來一個人購買了萵苣,不一定他會購買豆奶,頻繁項集使用支持度量化,關聯規則使用可信度或置信度量化。一條規則P->H的可信度定義為支持度(P|H)/支持度(P)。(注意:python中'|'表示并集,數學中'U'表示并集)
網絡示意圖:
? ? ? ?該圖為頻繁項集{0,1,2,3}的關聯規則網絡示意圖,陰影區域是第可信度的規則,如果發現0,1,2->3是低可信度的,則以3為后件的規則可信度也會低。因此,先從一個頻繁項集出發(單個元素是沒有關聯規則的,因此從兩個元素的頻繁項集出發),創建一個規則列表,該規則右邊只包含一個元素,然后對這些規則測試;然后合并所有規則創建新的關聯列表,該規則右邊包含兩個元素,以此類推。
代碼:
def generateRules(L,supportData,minConf=0.5):bigRuleList=[]for i in range(1,len(L)):for freqSet in L[i]:H1=[frozenset([item]) for item in freqSet] #H1是單個元素集合if(i>1):#pdb.set_trace()rulesFromConseq(freqSet,H1,supportData,bigRuleList,minConf)else:calcConf(freqSet,H1,supportData,bigRuleList,minConf)return bigRuleList#對于兩個元素的集合計算置信度 def calcConf(freqSet,H,supportData,br1,minConf=0.5): #freqSet頻繁項集prunedH=[]for conseq in H:conf=supportData[freqSet]/supportData[freqSet-conseq]if conf>=minConf:#pdb.set_trace()print(freqSet-conseq,"-->",conseq,'conf: %3.f'%conf)br1.append((freqSet-conseq,conseq,conf))prunedH.append(conseq)return prunedH#對于多于兩個元素的集合,先將元素分為兩兩結合的,然后對于兩兩結合的計算置信度 def rulesFromConseq(freqSet,H,supportData,br1,minConf=0.5):m=len(H[0])if(len(freqSet)>(m+1)):Hmp1=aprioriGen(H,m+1)Hmp1=calcConf(freqSet,Hmp1,supportData,br1,minConf)if len(Hmp1)>1:rulesFromConseq(freqSet, Hmp1, supportData, br1, minConf)?
總結
以上是生活随笔為你收集整理的第11章:使用Apriori算法进行关联分析(从频繁项集中挖掘关联规则)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现在考Oracle 19c OCP还需要
- 下一篇: 年轻不乏野心,想做年薪40万+的软件测试