最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题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关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Apriori算法的Python实现

来源:懂视网 责编:小采 时间:2020-11-09 14:20:22
文档

Apriori算法的Python实现

Apriori算法的Python实现:Apriori算法是数据挖掘中频发模式挖掘的鼻祖,从60年代就开始流行,其算法思想也十分简单朴素,首先挖掘出长度为1的频繁模式,然后k=2 将这些频繁模式合并组成长度为k的频繁模式,算出它们的频繁次数,而且要保证其所有k-1长度的子集也是频繁的,值得注意的
推荐度:
导读Apriori算法的Python实现:Apriori算法是数据挖掘中频发模式挖掘的鼻祖,从60年代就开始流行,其算法思想也十分简单朴素,首先挖掘出长度为1的频繁模式,然后k=2 将这些频繁模式合并组成长度为k的频繁模式,算出它们的频繁次数,而且要保证其所有k-1长度的子集也是频繁的,值得注意的

Apriori算法是数据挖掘中频发模式挖掘的鼻祖,从60年代就开始流行,其算法思想也十分简单朴素,首先挖掘出长度为1的频繁模式,然后k=2 将这些频繁模式合并组成长度为k的频繁模式,算出它们的频繁次数,而且要保证其所有k-1长度的子集也是频繁的,值得注意的

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)
 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

文档

Apriori算法的Python实现

Apriori算法的Python实现:Apriori算法是数据挖掘中频发模式挖掘的鼻祖,从60年代就开始流行,其算法思想也十分简单朴素,首先挖掘出长度为1的频繁模式,然后k=2 将这些频繁模式合并组成长度为k的频繁模式,算出它们的频繁次数,而且要保证其所有k-1长度的子集也是频繁的,值得注意的
推荐度:
标签: 实现 ap python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top