機器學習 演算法 Apriori

2021-06-18 01:53:18 字數 2060 閱讀 8900

參考:

很多人都喜歡用「啤酒跟尿布」這個例子來比喻機器學習,

主要就是想說明apriori在挖掘物件關聯的重要作用,這個演算法很簡單,沒有涉及複雜的數學知識,一點邏輯而已,還有改進的apriori演算法,有時間我也會實現一下

簡單實現了一下apriori,直接上python**和結果

#-*- coding:utf-8 -*-

'''created on aug 25, 2013

@author: blacklaw

@ref:

'''# trade data use goods id

data = [[1, 2, 5],

[2, 4],

[2, 3],

[1, 2, 4],

[1, 3],

[2, 3],

[1, 3],

[1, 2, 3, 5],

[1, 2, 3]

]def get_init_cand_list(data):

items =

for grade in data:

for good in grade:

tu = tuple([good])

if not tu in items:

return sorted(items)

def get_frequence_dict(data, cand_list):

# tran cand_list to dict with candiate cont

frequence_dict = {}

for cand in cand_list:

frequence_dict[cand] = 0

for grade in data:

if len(set(cand) - set(grade)) == 0:

frequence_dict[cand] += 1

return frequence_dict

def del_unfreque_item(freq_dict):

# unfrequece item's count is 1

for item, count in freq_dict.items():

if count <= 1:# count of 0 or 1 delete

freq_dict.pop(item)

def candiate_combine(freq_dict):

# upper goods count of frequence like (1,2) | (2,3) = (1,2,3)

candiate_list = freq_dict.keys()

ret_list =

for i, candiate in enumerate(candiate_list):

for union in candiate_list[i+1:]:

return list(set(ret_list))

if __name__ == "__main__":

cand_list = get_init_cand_list(data)

time = 0

while(true):

time += 1

freq_dict = get_frequence_dict(data, cand_list)

del_unfreque_item(freq_dict)

print '%d good(s) frequently together:' % time, freq_dict

cand_list = candiate_combine(freq_dict)

if len(cand_list) == 0:

break

結果:

1 good(s) frequently together: 

2 good(s) frequently together:

3 good(s) frequently together:

4 good(s) frequently together: {}

機器學習 Apriori演算法

apriori演算法包含兩部分內容 1,發現頻繁項集 2,挖掘關聯規則。通俗地解釋一下,就是這個意思 1.發現哪些專案常常同時出現 2.挖掘這些常常出現的專案是否存在 如果a那麼b 的關係。舉個例子 購物訂單常常會出現這樣一種情況 那就是某幾種物品常常一起買。比如鍋和鏟子 手機和手機殼等就會常常出現...

機器學習演算法 之Apriori

apriori演算法不同於以前接觸過的機器學習演算法,這種演算法用於在資料集中尋找有趣的關係。這些關係可以有兩種形式 頻繁項集或者關聯規則。關於演算法的詳細介紹參見 def apriori dataset,minsupport 0.5 c1 createc1 dataset d map set,da...

機器學習演算法(九) Apriori演算法

apriori演算法是一種關聯分析方法,用於發現隱藏在大型資料集中有意義的聯絡。所發現的聯絡可以使用關聯規則和頻繁項集來表示。令i 是購物籃資料所有項的集合,而t 是所有事務的集合。每個事務ti 包含的項集都是i的子集。在關聯分析中,包含0個或多個項的集合被稱為項集。如果乙個項集包含k個項,則稱它為...