apriori演算法是資料探勘中頻發模式挖掘的鼻祖,從60年代就開始流行,其演算法思想也十分簡單樸素,首先挖掘出長度為1的頻繁模式,然後k=2
將這些頻繁模式合併組成長度為k的頻繁模式,算出它們的頻繁次數,而且要保證其所有k-1長度的子集也是頻繁的,值得注意的是,為了避免重複,合併的時候,只合併那些前k-2個字元都相同,而k-1的字元一邊是少於另一邊的。
以下是演算法的python實現:
__author__ = 'linfuyuan'
min_frequency = int(raw_input('please input min_frequency:'))
file_name = raw_input('please input the transaction file:')
transactions =
def has_infrequent_subset(candidate, lk):
for i in range(len(candidate)):
subset = candidate[:-1]
subset.sort()
if not ''.join(subset) in lk:
return false
lastitem = candidate.pop()
candidate.insert(0, lastitem)
return true
def countfrequency(candidate, transactions):
count = 0
for transaction in transactions:
if transaction.issuperset(candidate):
count += 1
return count
with open(file_name) as f:
for line in f.readlines():
line = line.strip()
tokens = line.split(',')
if len(tokens) > 0:
transaction = set(tokens)
currentfrequencyset = {}
for transaction in transactions:
for item in transaction:
time = currentfrequencyset.get(item, 0)
currentfrequencyset[item] = time + 1
lk = set()
for (itemset, count) in currentfrequencyset.items():
if count >= min_frequency:
lk.add(itemset)
print ', '.join(lk)
while len(lk) > 0:
newlk = set()
for itemset1 in lk:
for itemset2 in lk:
cancombine = true
for i in range(len(itemset1)):
if i < len(itemset1) - 1:
cancombine = itemset1[i] == itemset2[i]
if not cancombine:
break
else:
cancombine = itemset1[i] < itemset2[i]
if not cancombine:
break
if cancombine:
newitemset =
for char in itemset1:
if has_infrequent_subset(newitemset, lk) and countfrequency(newitemset, transactions) >= min_frequency:
newlk.add(''.join(newitemset))
print ', '.join(newlk)
lk = newlk
Apriori演算法的介紹
資料探勘中的關聯分析可以分成頻繁項集的挖掘和關聯規則的生成兩個步驟,而apriori演算法是找頻繁項集最常用到的一種演算法。關於關聯分析和頻繁項集請見 什麼是關聯分析?我們還是利用購物籃的例子來講述apriori演算法的思路。購物籃資訊如下 tiditems 001cola,egg,ham 002c...
apriori演算法的學習
1993年美國學者agrawal提出通過分析購物籃中的商品集合,從而找出商品之間關聯關係的關聯演算法,並根據商品之間的關係,找出客戶的購買行為。agrawal從數學及計算機演算法角度提出了商品關聯關係的計算方法 apriori演算法。沃爾瑪從上個世紀90年代嘗試將aprior算 法引入到pos機資料...
Apriori演算法小結
1 apriori演算法是一種挖掘關聯規則的頻繁項集演算法,其核心思想是通過候選集生成挖掘頻繁項集。2 步驟 3 概念 對於a b 支援度 support p a b 既有a又有b 的概率 置信度 p b a p ab p a 在a 發生的事件中同時發生 b的概率 例如購物籃分析 牛奶 麵包例子 支...