def emit_prob_updated(self, X, post_state): # ??????
for k in range(self.n_state):
for j in range(self.x_size):
self.emit_means[k][j] = np.sum(post_state[:,k] *X[:,j]) / np.sum(post_state[:,k])
X_cov = np.dot((X-self.emit_means[k]).T, (post_state[:,k]*(X-self.emit_means[k]).T).T)
self.emit_covars[k] = X_cov / np.sum(post_state[:,k])
if det(self.emit_covars[k]) == 0: # ????????
self.emit_covars[k] = self.emit_covars[k] + 0.01*np.eye(len(X[0]))
评论列表
文章目录