Gaussian Mixture Clustering
Advanced classical-mlunsupervisedclusteringgaussian-mixture
Implement:
def gmm_e_step(input, weights, means, variances) -> np.ndarray:
"""Returns shape (n_samples, k) responsibilities."""
def gmm_m_step(input, responsibilities) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
"""Returns updated (weights, means, variances)."""
- Reuse
03-gaussian-naive-bayes's gaussian_log_likelihood.
- Diagonal covariance only,
variances[j] is one number per feature, per component, no cross-feature covariance terms.