더북(TheBook)

5.2.4 새로운 특성 부분 공간을 위해 선형 판별 벡터 선택

LDA의 남은 단계는 PCA와 유사합니다. 공분산 행렬에 대한 고윳값 분해를 수행하는 대신 행렬 Sw-1SB의 고윳값을 계산하면 됩니다.

>>> eigen_vals, eigen_vecs =\
...            np.linalg.eig(np.linalg.inv(S_W).dot(S_B))

고유 벡터와 고윳값 쌍을 계산한 후 내림차순으로 고윳값을 정렬합니다.

>>> eigen_pairs = [(np.abs(eigen_vals[i]), eigen_vecs[:,i]) 
...                for i in range(len(eigen_vals))]
>>> eigen_pairs = sorted(eigen_pairs, 
...                      key=lambda k: k[0], reverse=True)
>>> print('내림차순의 고윳값:\n')
>>> for eigen_val in eigen_pairs:
...     print(eigen_val[0])
내림차순의 고윳값:
349.61780890599397
172.7615221897939
2.7503677390586895e-14
2.7503677390586895e-14
2.4010440900940612e-14
2.4010440900940612e-14
2.2711972797109696e-14
2.2711972797109696e-14
1.5155189429341637e-14
5.818499407806176e-15
1.808279531061809e-15
1.808279531061809e-15
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.