5.1.3 총 분산과 설명된 분산
데이터셋 차원을 새로운 특성 부분 공간으로 압축하여 줄여야 하기에 가장 많은 정보(분산)를 가진 고유 벡터(주성분) 일부만 선택합니다. 고윳값은 고유 벡터의 크기를 결정하므로 고윳값을 내림차순으로 정렬합니다. 고윳값 순서에 따라 최상위 k개의 고유 벡터를 선택합니다. 가장 정보가 많은 k개의 고유 벡터를 선택하기 전에 고윳값의 설명된 분산 비율(explained variance ratio)을 그래프로 그려 보죠. 고윳값 λj의 설명된 분산 비율은 전체 고윳값의 합에서 고윳값 λj의 비율입니다.
넘파이 cumsum 함수로 설명된 분산의 누적 합을 계산하고 맷플롯립의 step 함수로 그래프를 그려 보겠습니다.
>>> tot = sum(eigen_vals)
>>> var_exp = [(i / tot) for i in
... sorted(eigen_vals, reverse=True)]
>>> cum_var_exp = np.cumsum(var_exp)
>>> import matplotlib.pyplot as plt
>>> plt.bar(range(1,14), var_exp, alpha=0.5, align='center',
... label='Individual explained variance')
>>> plt.step(range(1,14), cum_var_exp, where='mid',
... label='Cumulative explained variance')
>>> plt.ylabel('Explained variance ratio')
>>> plt.xlabel('Principal component index')
>>> plt.legend(loc='best')
>>> plt.tight_layout()
>>> plt.show()