字典中的累积分布



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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新