def gmm_sample(self, mean=None, w=None, N=10000,n=10,d=2,seed=10):
np.random.seed(seed)
self.d = d
if mean is None:
mean = np.random.randn(n,d)*10
if w is None:
w = np.random.rand(n)
w = w/sum(w)
multi = np.random.multinomial(N,w)
X = np.zeros((N,d))
base = 0
for i in range(n):
X[base:base+multi[i],:] = np.random.multivariate_normal(mean[i,:], np.eye(self.d), multi[i])
base += multi[i]
llh = np.zeros(N)
for i in range(n):
llh += w[i] * stats.multivariate_normal.pdf(X, mean[i,:], np.eye(self.d))
#llh = llh/sum(llh)
return X, llh
评论列表
文章目录