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
Python實現Apriori演算法
整體流程如下圖所示 如上圖所示,整個 分為以下幾個模組 1 createc1 dataset 說明 該函式根據輸入的資料集dataset來生成候選1項集。2 get lk dataset,ck,min sup 說明 該函式根據候選項集ck,從資料集中搜尋,判斷ck中每個項集在資料集中的支援度 這裡用...
Apriori 演算法python實現
1.apriori演算法簡介 apriori演算法是挖掘布林關聯規則頻繁項集的演算法。apriori演算法利用頻繁項集性質的先驗知識,通過逐層搜尋的迭代方法,即將k 項集用於探察 k 1 項集,來窮盡資料集中的所有頻繁項集。先找到頻繁項集1 項集集合l1,然後用l1找到頻繁2 項集集合l2,接著用l...
Apriori演算法的Python實現
apriori演算法是資料探勘中頻發模式挖掘的鼻祖,從60年代就開始流行,其演算法思想也十分簡單樸素,首先挖掘出長度為1的頻繁模式,然後k 2 將這些頻繁模式合併組成長度為k的頻繁模式,算出它們的頻繁次數,而且要保證其所有k 1長度的子集也是頻繁的,值得注意的是,為了避免重複,合併的時候,只合併那些...