字典中的累积分布

时间:2015-01-15 22:13:36

标签: python dictionary histogram cumulative-sum cumulative-frequency

我试图计算字典中的累积分布。分布应采用给定文本中的字母,并查找它们在文本中出现的概率,并由此计算累积分布。 我不知道我是否以正确的方式做到了,但这是我的代码:

with open('text') as infile:
text = infile.read()

letters = list(text)
letter_freqs = Counter(letters(text))
letter_sum = len(letters) 
letter_proba = [letter_freqs[letter]/letter_sum for letter in letters(text)]

现在我不想计算累积分布,并将其绘制成直方图,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

至少应该运行以下内容(您的代码已发布为赢得&#t; t):

import collections, itertools

with open('text') as infile:
    letters = list(infile.read())  # not just letters: whitespace & punct, too
    letter_freqs = collections.Counter(letters)
    letter_sum = len(letters)
    letters_set = sorted(set(letters))
    d = {l: letter_freqs[letter]/letter_sum for l in letters_set}
    cum = itertools.accumulate(d[l] for l in letters_set)
    cum_d = dict(zip(letters_set, cum)

现在你在cum_d中有一个字典映射每个字符,而不仅仅是字母,因为你没有做任何事情来排除空格和标点符号,以及该字符及其下面所有字符的累积概率。按字母顺序。你打算怎么计划"情节"一本字典,不知道。但是嘿,至少这个确实运行,并产生某些东西,这可能至少符合你为任务提供的模糊规范的一种解释! - )