k-최근접 이웃 알고리즘은 가장 간단한 지도학습 머신러닝 알고리즘으로 가장 가까운 훈련 데이터 포인트 하나를 최근접 이웃으로 찾아 예측합니다. 가장 가까운 이웃을 k개를 선택할 수 있고, 둘 이상의 이웃을 선택하였을 경우 레이블을 정하기 위해 더 많은 클래스를 레이블의 값으로 정합니다.
간단하게 파이썬으로 k-최근접 이웃 알고리즘의 성능을 평가해보겠습니다.
먼저 필요한 라이브러리를 가져옵니다.
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt
PCA는 특성 행렬의 차원을 축소하고, 표준 PCA는 샘플을 선형적으로 투영하여 특성을 축소합니다. 데이터가 선형적으로 구분되지 않으면 선형 변환이 잘 되지 않습니다. 하여 커널 함수를 이용하여 선형적으로 구분되지 않은 데이터를 선형적으로 구분되는 고차원 공간에서 주성분으로 투영된 결과를 반환하도록 합니다.
Kernel PCA에 사용할 수 있는 커널은 rbf(가우시안 방사 기저 함수 커널), poly(다항식 커널), sigmoid(시그모이드 커널), linear(선형 투영 커널) 등이 있습니다. linear를 이용하면 표준 PCA와 동일한 효과를 나타냅니다.
rbf 커널을 이용하는 코드를 구현해보겠습니다.
먼저 scikit-learn 의 함수를 이용하여 swiss roll data를 만들어 보겠습니다.
이는 선형적으로 구분되지 않은 데이터입니다.
features, t = make_swiss_roll(n_samples=1000, noise=0.1, random_state=42)