Python:为相对支持Apriori算法生成候选项集

问题描述 投票:0回答:1

请注意:此问题的标题可能不明确,因此我请其他用户请编辑它。我无法找到适合这个问题的合适标题。

上面讨论的问题是一个名为RSAA(相对支持Apriori算法)的算法的一部分,这里是研究论文链接:http://dl.acm.org/citation.cfm?id=937663

问题:我正在使用python实现像apriori这样的算法,在这样做时我遇到了一个问题,我在算法的每一步都生成这样的模式(候选项集)。

  • 在每个步骤中,主列表中子列表的长度应增加1。
  • 一步的输出将成为下一步的输入。
  • 主列表中的子列表可以按任何顺序出现,子列表中的数字可以按任何顺序出现。

这是一个例子:

输入:

input = [[5, 3], [5, 4], [5, 6], [7, 6]]

输出应该是:

output = [[5,3,4], [5,3,6], [4,5,6], [5,6,7]]

输出列表(^)的每个子列表必须只有3个项目(例如:[5,3,4])。

解决此问题的方法应该是通用的,因为在下一步中:

输入:

input = [[5,3,4], [5,3,6], [4,5,6], [5,6,7]]

输出:

output = [[5,3,4,6], [4,5,6,7]]

输出列表(^)的每个子列表必须只有4个项目。

([5,3,4,6]是通过连接[5,3,4]和[5,3,6]形成的。我们不能加入[5,3,4]和[5,6,7]因为这样做会产生[5,3,4,6,7]长度= 5)

python algorithm list data-mining apriori
1个回答
1
投票

我认为您的要求包含在先验中。我写了一篇关于算法的博客,不幸的是用中文。这是链接http://www.zealseeker.com/archives/apriori-algorithm-python/ 这是snippets(也用中文主持)

has_infrequent_subsetapriori_gen可能是你想要的两个功能。

如果代码对你有用,请评论我的答案,我会很乐意继续帮助你。


更新

在python中很容易得到两个序列的交集和差异。

a = set([5, 6])
b = set([6, 7])
c = a & b # get the itersection
if len(c) == len(a) - 1: 
  return a | b # their union
© www.soinside.com 2019 - 2024. All rights reserved.