0

Im пытается вычислить кумулятивное распределение в словаре. Распределение должно брать буквы из заданного текста и находить вероятность за время, которое они появляются в тексте, и из этого следует рассчитать кумулятивное распределение. я не знаю, если я делаю это правильно, но вот мой код:кумулятивное распространение в словаре

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

А теперь я wan't для расчета кумулятивного распределения и построить ее как гистограмма, может кто-то помочь меня?

+0

Заканчивать [SciPy] (HTTP: // эн. wikipedia.org/wiki/SciPy). [Здесь] (http://docs.scipy.org/doc/scipy-0.14.0/reference/index.html) - ссылка на ссылку API. –

+0

@NoobSaibot Что это? –

+0

Использование 'letters (text)' нарушено ('' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' И, над ** какой ** последовательностью вы хотите кумулятивно? '' буквы' сам? 'упорядоченные (набор (буквы))'? Конечно, 'itertools.accumulate' может делать накопление, но, как последовательность, и« заговор словаря »кажется странным, так как словарь не имеет порядка ... –

ответ

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 словарь отображение каждого символа, а не только буквы, конечно, так как вы не сделали ничего чтобы исключить пробелы и пунктуации, кумулятивную вероятность этого персонажа и всех ниже него в алфавитном порядке. Как вы планируете «заговорить» словарь, не знаю. Но эй, по крайней мере, этого делает бег, и производить что-то , которые могли бы соответствовать по крайней мере, одно толкование неопределенных спецификаций, которые вы даете для выполнения этой задачи -)

+0

Спасибо @Alex, я попытаюсь это сделать. Я не знаю, как я планировал построить словарь ... Im new на python, поэтому я делаю некоторые сбои. –

+0

@ py.codan Вы должны взглянуть на matplotlib. Это библиотека python для построения графика. Он может генерировать гистограммы. –

Смежные вопросы