Scipy多项分布PMF恒为0.0的原理疑问与技术咨询
关于多项分布PMF参数的认知澄清
核心误解纠正:Scipy中
multinomial.pmf的输入x不是类别标签,而是每个类别在n次独立试验中出现的次数。比如你有10个类别,x的第i个元素对应第i类被观测到的次数,所有元素的和必须等于试验总次数n——这是多项分布的定义要求:n次试验每次都归属于某一类,总次数必然是n,不符合这个条件的输入,概率结果自然为0。你输入的
[0,1,2,3,4,5,6,7,8,9]元素和为45,所以只有当n=45时,这个输入才符合多项分布的场景(45次试验中,第0类出现0次、第1类出现1次……第9类出现9次),其他n值下结果为0是完全合理的。再说说你提到的Multinoulli分布(即
n=1的多项分布):它对应单次试验的场景,此时x必须是one-hot向量——比如观测到第k类,x中只有第k个位置为1,其余全为0。举个例子,用你给出的概率数组:p = [0.14285714 0.11428571 0.14285714 0.08571429 0.11428571 0.05714286 0.14285714 0.02857143 0.11428571 0.05714286]计算单次试验选中第6类(索引6)的概率,应输入
x=[0,0,0,0,0,0,1,0,0,0],调用multinomial.pmf(x, n=1, p=p),结果就是p[6]对应的0.14285714,这才是Multinoulli分布的正确用法。
内容的提问来源于stack exchange,提问作者Kajice
相关产品推荐
相关产品推荐

