0

我正在尝试在 Python中实现 Apriori 算法... http://codeding.com/articles/apriori-algorithm 。

最高级别的数据结构是这样的:

frequentItemSets[ k-level : itemSetDictionary]
                            |
                            |__
                               itemSetDictionary[ listOfItems : supportValueOfItems]
                                                  |
                                                  |__
                                                     list of integers, sorted lexicographically

我需要跟踪任意数量的集合、这些集合的基数(k 级)以及我为每个集合计算的值。我认为对所有集合使用列表将是一个好主意,因为它们保持顺序并且是可迭代的。如上所示,我尝试使用列表作为 itemSetDictionary 中的键,但现在我看到可迭代数据结构不允许作为 Python 字典中的键。

我正在尝试找出解决此问题的最快方法。我知道我可以创建一些类,以便键现在是对象,而不是可迭代的数据结构,但我觉得这需要很长时间才能改变。

有任何想法吗?

4

1 回答 1

2

字典键必须是可散列的,可用要求它们是不可变的。它们是否可迭代并不重要。

在这种特殊情况下,您可能希望使用frozensets 作为键。

于 2014-02-02T22:07:15.307 回答