문제 4 · 실습 — 결측치 EM 2회
공분산이
python
import numpy as np
M = np.array([[1,2],[2,np.nan],[np.nan,3],[4,5],[5,4]], float)
mu = np.array([2., 2.])
print(f"초기 mu = ({mu[0]}, {mu[1]})")
for it in range(2):
F = M.copy()
miss = np.isnan(F)
F[miss] = np.take(mu, np.where(miss)[1]) # E 단계: 결측치를 mu로 채움 (cov=I)
mu = F.mean(0) # M 단계: 열 평균
print(f"iter {it+1}: mu = ({mu[0]:.4f}, {mu[1]:.4f})")