본문으로 건너뛰기
실습하기

K-최근접 이웃을 이용한 분류

K-최근접 이웃(KNN)은 분류 문제에 사용되는 가장 단순한 머신러닝 알고리즘 중 하나입니다.

훈련 데이터에서 가장 가까운 이웃들의 다수 클래스를 기준으로 새 데이터의 클래스를 결정합니다.


KNN의 동작 방식

  1. 전체 훈련 데이터를 저장합니다.
  2. 새로운 데이터 포인트에 대해:
    • 모든 훈련 샘플과의 거리를 계산합니다(일반적으로 유클리드 거리).
    • k개의 가장 가까운 이웃을 선택합니다.
    • 그 이웃들 중 가장 많이 등장한 클래스를 할당합니다.

예시: Iris 데이터셋에 KNN 적용

아래 예시는 KNN을 사용해 Iris 데이터셋을 분류하는 방법을 보여줍니다.

KNN 분류 예제
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, accuracy_score

# 데이터셋 로드
iris = load_iris()
X, y = iris.data, iris.target

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

# KNN 모델 생성
knn = KNeighborsClassifier(n_neighbors=3)

# 모델 학습
knn.fit(X_train, y_train)

# 예측
y_pred = knn.predict(X_test)

# 평가
print(f"정확도: {accuracy_score(y_test, y_pred):.2f}")
print("분류 보고서:", classification_report(y_test, y_pred))

k 값 선택하기

  • 작은 k: 유연성이 높지만 노이즈에 민감합니다.
  • k: 결정 경계가 매끄럽지만 과소적합될 수 있습니다.

여러 k 값을 시도해 보고 검증 정확도가 가장 높은 값을 선택하는 것이 좋습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!