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

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