더북(TheBook)

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 로지스틱 회귀가 만든 결정 경계

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