여기에서 λ는 스케일을 담당하는 고윳값입니다. 고유 벡터와 고윳값을 직접 계산하는 것은 재미없고 복잡한 작업이기 때문에 넘파이의 linalg.eig 함수를 사용하여 Wine 데이터셋의 공분산 행렬에 대한 고유 벡터와 고윳값 쌍을 계산하겠습니다.3
>>> import numpy as np
>>> cov_mat = np.cov(X_train_std.T)
>>> eigen_vals, eigen_vecs = np.linalg.eig(cov_mat)
>>> print('\n고윳값 \n', eigen_vals)
고윳값
[ 4.84274532 2.41602459 1.54845825 0.96120438 0.84166161 0.6620634 0.51828472
0.34650377 0.3131368 0.10754642 0.21357215 0.15362835 0.1808613 ]
numpy.cov 함수를 사용하여 표준화 전처리된 훈련 데이터셋의 공분산 행렬을 계산합니다. 그다음 linalg.eig 함수를 사용하여 고윳값 분해를 수행합니다. 이를 통해 13개의 고윳값이 들어 있는 벡터(eigen_vals)와 각 고윳값에 대응하는 고유 벡터가 열에 저장된 13×13 차원의 행렬(eigen_vecs)을 얻습니다.4