请注意:此问题的标题可能不明确,因此我请其他用户请编辑它。我无法找到适合这个问题的合适标题。
上面讨论的问题是一个名为RSAA(相对支持Apriori算法)的算法的一部分,这里是研究论文链接:http://dl.acm.org/citation.cfm?id=937663
问题:我正在使用python实现像apriori这样的算法,在这样做时我遇到了一个问题,我在算法的每一步都生成这样的模式(候选项集)。
这是一个例子:
输入:
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)
我认为您的要求包含在先验中。我写了一篇关于算法的博客,不幸的是用中文。这是链接http://www.zealseeker.com/archives/apriori-algorithm-python/ 这是snippets(也用中文主持)
has_infrequent_subset
和apriori_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