5.2.6 사이킷런의 LDA

    단계별로 구현해 보면 LDA의 작동 원리를 알고 LDA와 PCA 사이의 차이점을 이해하는 데 도움이 됩니다. 이제 사이킷런에 구현된 LDA 클래스를 살펴보죠.

    >>> from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
    >>> lda = LDA(n_components=2)
    >>> X_train_lda = lda.fit_transform(X_train_std, y_train)

    다음 LDA로 변환한 저차원 훈련 데이터셋에 로지스틱 회귀 분류기가 잘 동작하는지 확인해 보겠습니다.

    >>> lr = LogisticRegression(random_state=1)
    >>> lr = lr.fit(X_train_lda, y_train)
    >>> plot_decision_regions(X_train_lda, y_train, classifier=lr)
    >>> plt.xlabel('LD 1')
    >>> plt.ylabel('LD 2')
    >>> plt.legend(loc='lower left')
    >>> plt.tight_layout()
    >>> plt.show()

    결과 그래프를 보면 로지스틱 회귀 모델이 클래스 2의 샘플 하나를 제대로 분류하지 못했습니다.

    ▲ 그림 5-9 로지스틱 회귀가 만든 결정 경계

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