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
값을 시도해 보고 검증 정확도가 가장 높은 값을 선택하는 것이 좋습니다.
Quiz
0 / 1
K-최근접 이웃(KNN) 알고리즘은 새로운 데이터 포인트를 분류할 때 무엇을 사용하나요?
모든 학습 샘플까지의 거리의 합
데이터 포인트들의 평균값
최근접 이웃들의 다수 클래스
전체 데이터셋에서 가장 많은 샘플을 가진 클래스
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말