Apriori演算法Python實現

2021-09-07 00:17:59 字數 2086 閱讀 2113

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長度的子集也是頻繁的,值得注意的是,為了避免重複,合併的時候,只合併那些...