簡體   English   中英

查找 zipf 分布的“a”值

[英]Finding 'a' value of zipf distribution

我發現這個 python function 生成基於“a”值和“大小”值的 zipf 分布,其中大小類似於頻率表中的元素總數: https://numpy.org/doc/stable/參考/隨機/生成/numpy.random.zipf.html

現在,比方說,我運行此 function 以獲得“a”= 1.6 和大小 =“30”。 我使用 python 的字典數據結構來存儲我的頻率表,這就是它的樣子:

    dictionary = {1:16, 2:5, 3:2, 4:1, 12:1, 13:1, 16:1, 65:1, 152:1, 531:1}

鍵代表元素 1、2、3、4、12、13、16、65、152、531,值代表它們各自的頻率。

有沒有辦法根據查看字典來了解“a”值? 我要問的是,假設有一本像我上面寫的那樣的字典。 它是從某個值生成的。 我不知道 a 值是什么,但我知道字典包含什么。 根據字典元素的頻率,有沒有辦法計算“a”值? 例如,像一個公式?

[編輯]

這是我試過的東西。 使用 KL 散度,我計算了使用 2 個連續元素生成的值。 公式是

    (frequency of ith element) * ((log2(frequency of ith element)/log2(frequency of (i+1)th element))

我將這個公式應用於任何兩個連續的元素,並在最后找到總和。 我將這個總和除以字典的總頻率,得到一個“a”值。 但是,此“a”值永遠不會與原始“a”值匹配。

謝謝!

使用蒂姆羅伯特的提示:

from math import log

a = log(dictionary[1] / dictionary[2], 2)  # 1.68 for the given example

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM