1

我试图将累积分布计算到字典中。分布应该从给定文本中获取字母,并找到它们出现在文本中的时间的概率,并据此计算累积分布。我不知道我这样做是否正确,但这是我的代码:

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)]

现在我不想计算累积分布,而是像直方图一样绘制它,有人可以帮我吗?

4

1 回答 1

1

以下内容至少应该运行(您发布的代码不会运行):

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字典中将每个字符(当然不仅仅是字母)映射到该字符的累积概率,当然不仅仅是字母,因为您没有做任何事情来排除空格和标点符号,以及按字母顺序排列的所有字符的累积概率。你打算如何“绘制”一本字典,不知道。但是,嘿,至少这确实可以运行,并且产生的东西可能至少符合您为任务提供的模糊规范的一种解释!-)

于 2015-01-15T22:33:48.363 回答