이웃 성분 분석을 이용한 차원 축소

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 scikit-learn 라이브러리를 사용하여 차원 축소를 위한 이웃 구성 요소 분석 (NCA) 을 적용하는 방법을 보여줍니다. 이 실습에서는 Digits 데이터 세트에 적용된 다른 (선형) 차원 축소 방법과 NCA 를 비교합니다. Digits 데이터 세트는 각 클래스당 약 180 개의 샘플을 포함하여 0 부터 9 까지의 숫자 이미지를 포함합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 로드되는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 가져오기

필요한 라이브러리를 가져옵니다.

  • numpy
  • matplotlib.pyplot
  • datasets
  • train_test_split
  • PCA
  • LinearDiscriminantAnalysis
  • KNeighborsClassifier
  • NeighborhoodComponentsAnalysis
  • make_pipeline
  • StandardScaler

Digits 데이터셋 로드

scikit-learn 의 load_digits() 함수를 사용하여 Digits 데이터셋을 로드합니다.

데이터셋 분할

scikit-learn 의 train_test_split() 함수를 사용하여 데이터셋을 학습용과 테스트용으로 분할합니다.

변수 정의

분석에 필요한 변수를 정의합니다.

  • dim = 데이터셋의 특징 (feature) 개수
  • n_classes = 데이터셋의 클래스 개수
  • n_neighbors = KNN 분류기의 이웃 개수
  • random_state = 재현성을 위한 랜덤 시드

PCA 를 이용한 차원 축소

StandardScaler()PCA(n_components=2, random_state=random_state)를 포함하는 파이프라인을 생성하여 주성분 분석 (PCA) 을 사용하여 데이터셋의 차원을 2 차원으로 축소합니다.

선형 판별 분석 (LDA) 을 이용한 차원 축소

StandardScaler()LinearDiscriminantAnalysis(n_components=2)를 포함하는 파이프라인을 생성하여 선형 판별 분석 (LDA) 을 사용하여 데이터셋의 차원을 2 차원으로 축소합니다.

이웃 성분 분석 (NCA) 을 이용한 차원 축소

StandardScaler()NeighborhoodComponentsAnalysis(n_components=2, random_state=random_state)를 포함하는 파이프라인을 생성하여 이웃 성분 분석 (NCA) 을 사용하여 데이터셋의 차원을 2 차원으로 축소합니다.

KNN 분류기를 사용하여 방법 평가

n_neighbors를 매개변수로 하는 KNeighborsClassifier 를 생성합니다.

비교할 방법 목록 생성

5 단계에서 7 단계에서 정의된 방법들을 사용하여 KNN 분류기와 비교할 방법 목록을 만듭니다.

모델 학습 및 테스트 정확도 평가

각 모델을 학습하고, model.transform()으로 학습 데이터셋과 테스트 데이터셋을 변환한 후, 변환된 학습 데이터셋으로 KNN 분류기를 학습합니다. 변환된 테스트 데이터셋에서 knn.score()를 사용하여 최근접 이웃 정확도를 계산합니다.

투영된 점 플롯 및 평가 점수 표시

plt.scatter()plt.title()를 사용하여 각 방법에 대한 투영된 점을 플롯하고 평가 점수를 표시합니다.

플롯 표시

plt.show()를 사용하여 플롯을 표시합니다.

요약

이 실험에서는 이웃 성분 분석 (NCA) 을 사용하여 차원 축소를 수행하는 방법을 보여주고, Digits 데이터 세트에 적용된 다른 (선형) 차원 축소 방법과 비교했습니다. 결과는 차원이 크게 감소했음에도 불구하고 NCA 가 시각적으로 의미있는 데이터의 클러스터링을 강제한다는 것을 보여줍니다.