在Python中,如何计算作为列表一部分的集合的出现次数?

2024-09-28 20:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试实现apriori算法并使其达到可以提取所有事务中同时出现的子集的程度。在

这就是我所拥有的:

subsets = [set(['Breakfast & Brunch', 'Restaurants']), set(['American (Traditional)', 'Breakfast & Brunch']), set(['American (Traditional)', 'Restaurants']), set(['American (Traditional)', 'Breakfast & Brunch']), set(['Breakfast & Brunch', 'Restaurants']), set(['American (Traditional)', 'Restaurants'])]

例如,set(['Breakfast & Brunch', 'Restaurants'])出现两次 我需要记录发生的次数和相应的模式。在

我试着用:

^{pr2}$

但它会产生这样的错误:

  supported = itemsets_support(transactions, candidates)
  File "apriori.py", line 77, in itemsets_support
    support_set.update(subsets)
  File"/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 567, in update
    self[elem] = self_get(elem, 0) + 1
TypeError: unhashable type: 'set'

有什么想法吗?在


Tags: inpysupportlineupdatefileamericanset
1条回答
网友
1楼 · 发布于 2024-09-28 20:18:06

您可以将集合转换为可散列的^{}实例:

>>> from collections import Counter
>>> subsets = [set(['Breakfast & Brunch', 'Restaurants']), set(['American (Traditional)', 'Breakfast & Brunch']), set(['American (Traditional)', 'Restaurants']), set(['American (Traditional)', 'Breakfast & Brunch']), set(['Breakfast & Brunch', 'Restaurants']), set(['American (Traditional)', 'Restaurants'])]
>>> c = Counter(frozenset(s) for s in subsets)
>>> c
Counter({frozenset(['American (Traditional)', 'Restaurants']): 2, frozenset(['Breakfast & Brunch', 'Restaurants']): 2, frozenset(['American (Traditional)', 'Breakfast & Brunch']): 2})

相关问题 更多 >