【发布时间】:2019-08-22 21:53:00
【问题描述】:
简单地尝试为 EM 算法找到计算此更新后协方差矩阵的最佳方法 *
我已经开发了算法,但是使用了 for 循环。我正在尝试确定如何利用 Numpy 矢量化。
cov_c = []
for cluster, u, w in zip(r.T, mu_c, total_weight):
s = 0
for n in range(len(d)):
s += cluster[n]*np.outer(d[n] - u, d[n] - u)
cov_c.append(s / w)
cov_c 是一个包含两个元素的列表,每个列表都有一个协方差矩阵 (2x2)
[array([[0.19, 0.23],[0.23, 0.39]]),
array([[4.05, -5.01,[-5.018, 6.22]])]
d 和 r 都是二维数组(加权样本) d 是特征向量(100 个样本的 2 个特征),其中 r 是 2 个高斯的每个特征的权重
d.shape
(100, 2)
r.shape
(100, 2)
mu_c 是平均向量的二元素列表
mu_c
[array([ 0.24387682, -0.27793324]), array([ 2.37853451, -1.86454301])]
总重量是一个归一化因子(简单的 2 元素一维数组):
total_weight
array([53.51779102, 46.48220898])
关于如何向量化这个计算有什么建议吗?谢谢!
【问题讨论】:
-
是的。谢谢你的回答!
标签: python arrays numpy matrix vectorization