사이킷런의 PCA 투영과 우리가 직접 만든 PCA 구현을 비교했을 때 두 그래프가 거울에 비친 것처럼 뒤집힌 경우가 있습니다. 두 그래프 중 하나에 문제가 있기 때문이 아니고 계산 방법에 따라 고유 벡터는 음수나 양수 부호를 가질 수 있기 때문입니다.
이것이 문제가 되지 않지만 필요하다면 데이터에 -1을 곱해서 이미지를 뒤집을 수 있습니다. 고유 벡터는 일반적으로 단위 길이가 1이 되도록 정규화되어 있습니다. 예제를 마무리하기 위해 테스트 데이터셋을 변환하고 로지스틱 회귀가 클래스를 잘 구분하는지 결정 경계를 그려 봅시다.
>>> plot_decision_regions(X_test_pca, y_test, classifier=lr)
>>> plt.xlabel('PC1')
>>> plt.ylabel('PC2')
>>> plt.legend(loc='lower left')
>>> plt.tight_layout()
>>> plt.show()
이 코드를 실행하여 테스트 데이터셋에서 결정 경계를 그리고 나면 로지스틱 회귀가 2차원 특성 부분 공간에서 매우 잘 작동한다는 것을 알 수 있습니다. 테스트 데이터셋에 있는 샘플 몇 개만 분류하지 못했습니다.
▲ 그림 5-5 테스트 데이터셋 예측 결과