微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用python的条件和联合问题

如何解决使用python的条件和联合问题

我有一个联合概率 P(x,y) 表,我想创建一个函数来计算给定联合概率列表的条件概率。例如我有以下列表 XY=np.array([[.1,0],[.1,.3,.2],.2]]) XY.shape=(3,3)

我想得到每个索引的条件概率,以便找到 x1cony1=XY[0,0]/y1=1 的条件概率 x2cony1=XY[0,1]/y1=.1

有没有办法编写一个函数来遍历矩阵并为我提供所有条件概率表?

谢谢

解决方法

我不明白你的符号。我将尝试用我的符号回答你的问题,希望你能推断出你的问题。 假设矩阵 XY 包含连接概率,即

P(x=x_i,y=y_j) = XY[i,j].

现在,条件概率是

P(x=x_i | y=y_j) = P(x=x_i,y=y_j)/P(y=y_j) = XY[i,j]/(XY[0,j]+XY[1,j]+XY[2,j])

使用第一个轴上的 NumPy 总和可以轻松计算分母:

XY.sum(axis=0)

现在您应该将第一列(其中包含概率 P(x=x_i,y=y_0))除以总和的第一个值,即概率 P(y=y_0)。其他两列也类似。 这也可以直接完成,因为在 NumPy 中,(3,3) 矩阵与 (3) 向量的乘积是按列完成的,这正是我们想要的。 因此,这应该为您提供条件概率矩阵:

XY = np.array(...)  # XY[i,j] is the probability of x=x_i,y=y_j.
# The probability of x_i conditioned to y_j is given by the [i,j] element of:
cond_prob = XY/XY.sum(axis=0)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。