Python Counter類(lèi)
Python中的Counter類(lèi)是collections模塊的一部分。計(jì)數(shù)器提供了一種快速的方法來(lái)計(jì)算列表中存在的唯一項(xiàng)的數(shù)量。Counter類(lèi)也可以擴(kuò)展為表示概率質(zhì)量函數(shù)和貝葉斯假設(shè)組。計(jì)數(shù)器是從值到其頻率的映射。如果使用字符串初始化計(jì)數(shù)器,則會(huì)得到每個(gè)字母到它出現(xiàn)的次數(shù)的映射。如果兩個(gè)單詞是字謎,它們會(huì)產(chǎn)生相等的計(jì)數(shù)器,因此您可以使用Counters在線(xiàn)性時(shí)間內(nèi)測(cè)試字謎。
多集
計(jì)數(shù)器是多集的自然表示,多集是元素可以多次出現(xiàn)的集合。您可以使用is_subset之類(lèi)的集合操作來(lái)擴(kuò)展Counter:您可以is_subset在Scrabble之類(lèi)的游戲中使用它來(lái)查看給定的一組圖塊是否可用于拼寫(xiě)給定的單詞。
概率質(zhì)量函數(shù)
您還可以擴(kuò)展“計(jì)數(shù)器”以表示概率質(zhì)量函數(shù)(PMF)。normalize計(jì)算頻率的總和并進(jìn)行除法,得到加到1的概率。__add__枚舉所有值對(duì),并返回代表和分布的新Pmf。__hash__并且__id__使保偏光纖哈希的; 這不是最好的方法,因?yàn)樗鼈兪强勺兊?。因此,此?shí)現(xiàn)帶有警告,如果您使用Pmf作為密鑰,則不應(yīng)對(duì)其進(jìn)行修改。更好的選擇是定義一個(gè)凍結(jié)的Pmf。render以準(zhǔn)備繪制的形式返回值和概率:
使用Pmf對(duì)象
例如,我們可以制作一個(gè)表示6面模具的Pmf對(duì)象。
添加運(yùn)算符
使用加法運(yùn)算符,我們可以計(jì)算兩個(gè)骰子之和的分布。
計(jì)算分布
使用numpy.sum,我們可以計(jì)算三個(gè)骰子的和的分布。然后繪制結(jié)果(使用Pmf.render)
貝葉斯統(tǒng)計(jì)
套件是表示一組假設(shè)及其概率的Pmf;它提供bayesian_update,可以根據(jù)新數(shù)據(jù)更新假設(shè)的概率。Suite是一個(gè)抽象的父類(lèi)。子類(lèi)應(yīng)提供一種可能性方法,用于評(píng)估給定假設(shè)下數(shù)據(jù)的可能性。bayesian_update遍歷假設(shè),評(píng)估每個(gè)假設(shè)下數(shù)據(jù)的可能性,并相應(yīng)地更新概率。然后,它重新規(guī)范化PMF。
套件示例
例如,我將使用Suite解決Think Bayes第3章中的“骰子問(wèn)題” :
“假設(shè)我有一盒骰子,其中包含4面骰子,6面骰子,8面骰子,12面骰子和20面骰子。如果您曾經(jīng)玩過(guò)《龍與地下城》,您就會(huì)知道我在說(shuō)什么。假設(shè)我從盒子中隨機(jī)選擇一個(gè)骰子,將其擲骰并得到6。我擲每個(gè)骰子的概率是多少?”
我將首先列出代表骰子的Pmfs:
骰子套件
接下來(lái),我將定義DiceSuite,該繼承bayesian_update自Suite并提供likelihood。data是觀察到的模頭輥,本例中為6。hypo是我可能已經(jīng)猜到的假想死亡;為了獲得數(shù)據(jù)的可能性,我從給定的模具中選擇給定值的概率。
更新發(fā)行版
最后,我使用骰子列表實(shí)例化從每個(gè)骰子映射到其先驗(yàn)概率的Suite。默認(rèn)情況下,所有骰子的優(yōu)先級(jí)相同。然后,我使用給定值更新分布并打印結(jié)果:
另一個(gè)更新
如預(yù)期的那樣,消除了4面模具?,F(xiàn)在它的概率為0。6面模具最有可能,但8面模具仍然很有可能。現(xiàn)在,假設(shè)我再次擲骰子并得到8。我們可以使用新數(shù)據(jù)再次更新套件。現(xiàn)在6面模具已被淘汰,8面模具很有可能,而我滾動(dòng)20面模具的機(jī)會(huì)不到10%。這些示例說(shuō)明了Counter類(lèi)的多功能性,Counter類(lèi)是Python使用不足的數(shù)據(jù)結(jié)構(gòu)之一。
填寫(xiě)下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)!怕錢(qián)不夠?可先就業(yè)掙錢(qián)后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!
?2007-2022/ m.5wd995.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話(huà):010-53672995 郵箱:bjaaa@aaaedu.cc