def _maximization(self):
# Maximize priors
priors = sum(self.responsibility_matrix)
priors = [float(i)/sum(priors) for i in priors]
# Maximize means
mus = [0 for i in range(self.c)]
for k in range(self.c):
mus_k = sum(np.multiply(self.samples,
self.responsibility_matrix[:, k][:, np.newaxis]))
normalized_mus_k = mus_k / sum(self.responsibility_matrix[:, k])
mus[k] = normalized_mus_k
# Maximize covariances
covs = [0 for i in range(self.c)]
for k in range(self.c):
covs[k] = np.cov(self.samples.T,
aweights=self.responsibility_matrix[:, k])
return priors, mus, covs
评论列表
文章目录