def _compute_log_likelihood(self, X):
seq_len = X.shape[0]
n_states = self.n_components
n_dim = X.shape[1]
p = np.zeros((seq_len,n_states))
for i in range(seq_len):
miss = np.isnan(X[i])
p[i] = np.sum(miss * np.log(self.miss_probs_) + (1-miss) * np.log(1-self.miss_probs_), axis=1)
if not np.all(miss):
for state in range(n_states):
mean = self.means_[state][miss==0]
cov = self.covars_[state][np.ix_(miss==0,miss==0)]
p[i][state] = p[i][state] + np.log(multivariate_normal.pdf(X[i][miss==0],mean=mean,cov=cov))
return p
评论列表
文章目录