我们说我有一个列表列表,我想找到一对(或更多)元素总共出现的频率。
例如,如果我有[[a,b,c],[b,c,d],[c,d,e]
我想:(a,b)= 1,(b,c)= 2,(c,d)= 2,等等。
我尝试找到一个可用的apriori算法,允许我这样做,但我在python中找不到一个易于实现的算法。
我如何以更好的方式解决这个问题?
答案 0 :(得分:0)
这是一种方法:
from itertools import combinations
l = [['a','b','c'],['b','c','d'],['c','d','e']]
d = {}
for i in l:
# for every item on l take all the possible combinations of 2
comb = combinations(i, 2)
for c in comb:
k = ''.join(c)
if d.get(k):
d[k] += 1
else:
d[k] = 1
结果:
>>> d
{'bd': 1, 'ac': 1, 'ab': 1, 'bc': 2, 'de': 1, 'ce': 1, 'cd': 2}