우당탕탕 개발일지

[혼공머신] 1-3 K-최근접 이웃 알고리즘 본문

인공지능

[혼공머신] 1-3 K-최근접 이웃 알고리즘

민아당긴아 2025. 1. 2. 23:14

💡 K-최근접 이웃 알고리즘

분류 알고리즘으로, 근처에 있는 K개의 데이터를 바탕으로 분류하는 알고리즘

K의 값은 매개변수로 직접 설정 가능하다.

ⓒ https://mlarchive.com/machine-learning/k-nearest-neighbor-knn-explained/

이 사진의 경우 K = 3으로 설정한 K-최근접 이웃 알고리즘으로, 새로운 값의 가장 근처에 있는 3개의 데이터를 활용한다.

3개의 데이터 중 2개는 삼각형, 1개는 사각형이므로 삼각형으로 분류하게 된다.

단순한 알고리즘으로, 구현하는 큰 틀만 기억하고 넘어가야겠다.

 

💡 K-최근접 이웃 알고리즘 라이브러리

KNeighborsClassifier 라이브러리를 사용한다.

from sklearn.neighbors import KNeighborsClassifier

분류기 객체(모델)를 만든 뒤, 데이터를 이용해서 모델을 학습(훈련)하고, 정확도를 계산한다.

# 사이킷런 패키지에서 K-최근접 이웃 알고리즘 클래스 불러오기
from sklearn.neighbors import KNeighborsClassifier
# 클래스의 객체 만들기
kn = KNeighborsClassifier()
# 특성 데이터와 정답 데이터로 알고리즘 훈련하기
kn.fit(fish_data, fish_target)
# 정확도 계산을 통한 모델 평가
kn.score(fish_data, fish_target)
# 새로운 데이터의 정답 예측
kn.predict([[30, 600]])

새로운 데이터의 정답을 예측할 때에는 predict 함수를 사용한다.

# KNeighborsClassifier의 매개변수 n_neighbors를 조정하여 참고할 가까운 데이터의 개수 정하기(기본값은 5)
kn49 = KNeighborsClassifier(n_neighbors = 49)

K값을 직접 지정할 수 있으며, 기본값은 K=5이다.