문제 10 · 실습 — PCA 고유분해
공분산 행렬의 고유분해로 제1 주성분을 계산합니다.
python
import numpy as np
D = np.array([[1,0],[0,1],[1,1]], float)
xbar = D.mean(0)
S = ((D - xbar).T @ (D - xbar)) / len(D) # 공분산 (1/N)
vals, vecs = np.linalg.eigh(S) # 고윳값 오름차순
print(f"평균 x̄ = {xbar}")
print("공분산 S =\n", S)
print(f"고윳값 = {vals.round(4)}")
print(f"제1 주성분 (λ={vals[-1]:.4f}) = {vecs[:,-1].round(4)} (∝ (1, -1)/√2)")