더북(TheBook)

5.3.4 사이킷런의 커널 PCA

편리하게도 사이킷런은 sklearn.decomposition 모듈 아래 커널 PCA 클래스를 구현해 놓았습니다. 사용법은 기본 PCA 클래스와 비슷합니다. kernel 매개변수로 커널의 종류를 지정합니다.

>>> from sklearn.decomposition import KernelPCA
>>> X, y = make_moons(n_samples=100, random_state=123)
>>> scikit_kpca = KernelPCA(n_components=2,
...                         kernel='rbf', gamma=15)
>>> X_skernpca = scikit_kpca.fit_transform(X)

우리가 구현한 커널 PCA와 동일한 결과가 나오는지 확인하기 위해 변환된 반달 모양 데이터를 처음 두 개의 주성분에 그려 보겠습니다.

>>> plt.scatter(X_skernpca[y==0, 0], X_skernpca[y==0, 1],
...             color='red', marker='^', alpha=0.5)
>>> plt.scatter(X_skernpca[y==1, 0], X_skernpca[y==1, 1],
...             color='blue', marker='o', alpha=0.5)
>>> plt.xlabel('PC1')
>>> plt.ylabel('PC2')
>>> plt.tight_layout()
>>> plt.show()

그림 5-19에서 볼 수 있듯이 사이킷런의 KernelPCA 결과는 직접 구현한 것과 같습니다.

▲ 그림 5-19 KernelPCA 만든 주성분

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.