本文簡要介紹 python 語言中 numpy.random.Generator.multinomial
的用法。
用法:
random.Generator.multinomial(n, pvals, size=None)
從多項分布中抽取樣本。
多項分布是二項分布的多元推廣。使用其中之一進行實驗
p
可能的結果。此類實驗的一個示例是擲骰子,其結果可以是 1 到 6。從分布中抽取的每個樣本代表n這樣的實驗。它的值,X_i = [X_0, X_1, ..., X_p]
, 代表結果出現的次數i
.- n: int 或類似整數的數組
實驗次數。
- pvals: 類似浮點數的數組
形狀為
(k0, k1, ..., kn, p)
的每個p
不同結果的概率。每個元素pvals[i,j,...,:]
的總和必須為 1(但是,隻要sum(pvals[..., :-1], axis=-1) <= 1.0
,始終假定最後一個元素說明剩餘概率。必須至少有 1 個維度,其中 pvals.shape[-1] > 0。- size: int 或整數元組,可選
輸出形狀。例如,如果給定的形狀是
(m, n, k)
,則每個m * n * k
樣本都使用p
元素繪製。默認為 None ,其中輸出大小由n
的廣播形狀決定,並且全部由pvals
的最終維度決定,表示為b=(b0, b1, ..., bq)
。如果 size 不是 None,那麽它必須與廣播形狀b
兼容。具體來說, size 必須有q
或更多元素,並且 size[-(q-j):] 必須等於bj
。
- out: ndarray
繪製的樣品,形狀大小(如果提供)。提供 size 時,輸出形狀為 size + (p,) 如果未指定,則形狀由
n
和pvals
的廣播形狀確定,(b0, b1, ..., bq)
增加了多項式的維度,p
,因此該輸出形狀為(b0, b1, ..., bq, p)
。每個條目
out[i,j,...,:]
是從分布中提取的p
維值。
參數:
返回:
例子:
擲骰子 20 次:
>>> rng = np.random.default_rng() >>> rng.multinomial(20, [1/6.]*6, size=1) array([[4, 1, 7, 5, 2, 1]]) # random
它在 1 上降落 4 次,在 2 上降落一次,依此類推。
現在,擲骰子 20 次,再擲 20 次:
>>> rng.multinomial(20, [1/6.]*6, size=2) array([[3, 4, 3, 3, 4, 3], [2, 4, 3, 4, 0, 7]]) # random
第一次運行時,我們投擲了 3 次 1、4 次 2 等。第二次,我們投擲了 2 次 1、4 次 2 等。
現在,做一個實驗,擲骰子 10 次,再擲 10 次,另一個擲骰子 20 次,再擲 20 次:
>>> rng.multinomial([[10], [20]], [1/6.]*6, size=(2, 2)) array([[[2, 4, 0, 1, 2, 1], [1, 3, 0, 3, 1, 2]], [[1, 4, 4, 4, 4, 3], [3, 3, 2, 5, 5, 2]]]) # random
第一個數組顯示擲骰子 10 次的結果,第二個數組顯示擲骰子 20 次的結果。
裝滿骰子的骰子更有可能落在 6 號上:
>>> rng.multinomial(100, [1/7.]*5 + [2/7.]) array([11, 16, 14, 17, 16, 26]) # random
模擬 10 次 4 麵骰子和 20 次 6 麵骰子
>>> rng.multinomial([10, 20],[[1/4]*4 + [0]*2, [1/6]*6]) array([[2, 1, 4, 3, 0, 0], [3, 3, 3, 6, 1, 4]], dtype=int64) # random
從兩個類別生成分類隨機變量,其中第一個有 3 個結果,第二個有 2 個。
>>> rng.multinomial(1, [[.1, .5, .4 ], [.3, .7, .0]]) array([[0, 0, 1], [0, 1, 0]], dtype=int64) # random
argmax(axis=-1)
然後用於返回類別。>>> pvals = [[.1, .5, .4 ], [.3, .7, .0]] >>> rvs = rng.multinomial(1, pvals, size=(4,2)) >>> rvs.argmax(axis=-1) array([[0, 1], [2, 0], [2, 1], [2, 0]], dtype=int64) # random
使用廣播可以產生相同的輸出維度。
>>> rvs = rng.multinomial([[1]] * 4, pvals) >>> rvs.argmax(axis=-1) array([[0, 1], [2, 0], [2, 1], [2, 0]], dtype=int64) # random
概率輸入應該歸一化。作為一個實現細節,最後一個條目的值被忽略並假定占據任何剩餘的概率質量,但這不應該被依賴。一個有偏差的硬幣,其一側的重量是另一側的兩倍,應該像這樣采樣:
>>> rng.multinomial(100, [1.0 / 3, 2.0 / 3]) # RIGHT array([38, 62]) # random
不喜歡:
>>> rng.multinomial(100, [1.0, 2.0]) # WRONG Traceback (most recent call last): ValueError: pvals < 0, pvals > 1 or pvals contains NaNs
相關用法
- Python numpy Generator.multivariate_normal用法及代碼示例
- Python numpy Generator.multivariate_hypergeometric用法及代碼示例
- Python numpy Generator.standard_normal用法及代碼示例
- Python numpy Generator.bytes用法及代碼示例
- Python numpy Generator.shuffle用法及代碼示例
- Python numpy Generator.choice用法及代碼示例
- Python numpy Generator.random用法及代碼示例
- Python numpy Generator.logseries用法及代碼示例
- Python numpy Generator.uniform用法及代碼示例
- Python numpy Generator.standard_t用法及代碼示例
- Python numpy Generator.standard_cauchy用法及代碼示例
- Python numpy Generator.normal用法及代碼示例
- Python numpy Generator.poisson用法及代碼示例
- Python numpy Generator.power用法及代碼示例
- Python numpy Generator.geometric用法及代碼示例
- Python numpy Generator.laplace用法及代碼示例
- Python numpy Generator.vonmises用法及代碼示例
- Python numpy Generator.noncentral_f用法及代碼示例
- Python numpy Generator.gamma用法及代碼示例
- Python numpy Generator.weibull用法及代碼示例
- Python numpy Generator.gumbel用法及代碼示例
- Python numpy Generator.pareto用法及代碼示例
- Python numpy Generator.noncentral_chisquare用法及代碼示例
- Python numpy Generator.negative_binomial用法及代碼示例
- Python numpy Generator.binomial用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.random.Generator.multinomial。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。