最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

Apriori算法的Python實(shí)現(xiàn)

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 14:20:22
文檔

Apriori算法的Python實(shí)現(xiàn)

Apriori算法的Python實(shí)現(xiàn):Apriori算法是數(shù)據(jù)挖掘中頻發(fā)模式挖掘的鼻祖,從60年代就開始流行,其算法思想也十分簡單樸素,首先挖掘出長度為1的頻繁模式,然后k=2 將這些頻繁模式合并組成長度為k的頻繁模式,算出它們的頻繁次數(shù),而且要保證其所有k-1長度的子集也是頻繁的,值得注意的
推薦度:
導(dǎo)讀Apriori算法的Python實(shí)現(xiàn):Apriori算法是數(shù)據(jù)挖掘中頻發(fā)模式挖掘的鼻祖,從60年代就開始流行,其算法思想也十分簡單樸素,首先挖掘出長度為1的頻繁模式,然后k=2 將這些頻繁模式合并組成長度為k的頻繁模式,算出它們的頻繁次數(shù),而且要保證其所有k-1長度的子集也是頻繁的,值得注意的

Apriori算法是數(shù)據(jù)挖掘中頻發(fā)模式挖掘的鼻祖,從60年代就開始流行,其算法思想也十分簡單樸素,首先挖掘出長度為1的頻繁模式,然后k=2 將這些頻繁模式合并組成長度為k的頻繁模式,算出它們的頻繁次數(shù),而且要保證其所有k-1長度的子集也是頻繁的,值得注意的

Apriori算法是數(shù)據(jù)挖掘中頻發(fā)模式挖掘的鼻祖,從60年代就開始流行,其算法思想也十分簡單樸素,首先挖掘出長度為1的頻繁模式,然后k=2

將這些頻繁模式合并組成長度為k的頻繁模式,算出它們的頻繁次數(shù),而且要保證其所有k-1長度的子集也是頻繁的,值得注意的是,為了避免重復(fù),合并的時(shí)候,只合并那些前k-2個(gè)字符都相同,而k-1的字符一邊是少于另一邊的。

以下是算法的Python實(shí)現(xiàn):

__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)
 transactions.append(transaction)
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:
 newitemset.append(char)
 newitemset.append(itemset2[-1])
 if has_infrequent_subset(newitemset, Lk) and countFrequency(newitemset, transactions) >= min_frequency:
 newLk.add(''.join(newitemset))
 print ', '.join(newLk)
 Lk = newLk

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Apriori算法的Python實(shí)現(xiàn)

Apriori算法的Python實(shí)現(xiàn):Apriori算法是數(shù)據(jù)挖掘中頻發(fā)模式挖掘的鼻祖,從60年代就開始流行,其算法思想也十分簡單樸素,首先挖掘出長度為1的頻繁模式,然后k=2 將這些頻繁模式合并組成長度為k的頻繁模式,算出它們的頻繁次數(shù),而且要保證其所有k-1長度的子集也是頻繁的,值得注意的
推薦度:
標(biāo)簽: 實(shí)現(xiàn) ap python
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top