K-최근접 이웃을 이용한 분류
K-최근접 이웃(KNN)
은 분류 문제에 사용되는 가장 단순한 머신러닝 알고리즘 중 하나입니다.
훈련 데이터에서 가장 가까운 이웃들의 다수 클래스
를 기준으로 새 데이터의 클래스를 결정합니다.
KNN의 동작 방식
- 전체 훈련 데이터를 저장합니다.
- 새로운 데이터 포인트에 대해:
- 모든 훈련 샘플과의 거리를 계산합니다(일반적으로 유클리드 거리).
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 강의를 등록해 주세요!