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로 만든 주성분