- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
给定一些数据,data
,它对应于抛硬币的二进制序列,其中正面为 1,反面为 0。 Theta 是一个介于 0 和 1 之间的值,表示抛硬币时正面朝上的概率。
如何计算可能性?我依稀记得一个公式,其中:
likelihood = (theta)^(h)*(1-theta)^(1-h)
如果正面朝上,h 为 1,如果反面朝上,则为 0。我实现了以下代码:
import numpy as np
(np.prod([theta*1 for i in data if i==1]) * np.prod([1-theta for i in data if i==0]))
此代码适用于某些情况但不适用于某些隐藏的情况(所以我不确定它有什么问题)。
最佳答案
有几种方法可以解释您要计算的内容:
X
)的概率,与顺序无关(我认为你要求的是这样)。选项 1:
import numpy as np
theta = 0.2 # Probability of H is 0.2, hence NOT a fair coin
data = [0, 1, 0, 1, 1, 1, 0, 0, 1, 1] # T, H, T, H, H, ....
def likelihood(theta, h):
return (theta)**(h)*(1-theta)**(1-h)
likelihood(theta, 1) # 0.2
likelihood(theta, 0) # 0.8
singlethrow = [likelihood(theta, x) for x in data]
prob1 = np.prod(singlethrow) # 2.6214400000000015e-05
prob1
会很快收敛到零,因为每次额外抛硬币都会将现有概率乘以一个小于 1 的数字(正面为 0.2,反面为 0.8)
选项 2:
是二项分布。这将所有可能结果的概率加起来,当抛硬币 10 次时,总共产生 6 个正面朝上的概率。我们已经在上面的选项 1 中评估过的一个特定序列导致 10 次抛掷 6 次正面朝上。有 210 种这样的方式 ( = 10!/(6!*(10−6)!) )
scipy.stats.binom.pmf()
功能为您计算此概率:
import scipy, scipy.stats
prob2 = scipy.stats.binom.pmf(6, 10, theta)
或者,更一般地说,如果您依赖于我上面定义的形式的 data
:
X = sum([toss == 1 for toss in data])
N = len(data)
prob3 = scipy.stats.binom.pmf(X, N, theta)
prob2 == prob3 # True
关于python - 贝叶斯法则——如何计算似然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40603902/
我开始研究应用于计算机视觉和情感计算的机器学习和贝叶斯推理。 如果我理解正确的话,之间有一个很大的讨论 经典信息架构、本体论、语义网络研究人员 以及机器学习和贝叶斯专家 我认为这通常被称为强人工智能与
我有一个 MS SQL Server 2008 数据库,用于存储提供食物的地方(咖啡馆、餐馆、小餐馆等)。在连接到该数据库的网站上,人们可以从 1 到 3 的等级对地点进行评分。 在网站上有一个页面,
我正在努力学习 pyMC 3,但遇到了一些麻烦。由于 pyMC3 的教程有限,我从 Bayesian Methods for Hackers 开始工作.我正在尝试将 pyMC 2 代码移植到 Baye
我是一名优秀的程序员,十分优秀!