'네 주변의 가장 가까운 이웃 k명에게 물어봐!' — 학습 과정이 아예 없는 게으른 모델, 거리와 다수결만으로 분류해요.
🖱️ 마우스를 움직이면 ⭐ 별(새 점)이 따라다니며 그 자리의 분류 결과를 보여줘요. 클릭하면 선택한 색의 점이 추가되고, 기존 점 근처를 클릭하면 삭제돼요.
가로·세로축은 두 가지 특징(예: 몸무게와 키), 🔵🔴 점은 기억된 데이터예요. 옅은 배경색은 결정 영역 — 그 자리에 새 점이 오면 어느 색으로 분류되는지를 미리 칠한 지도입니다. k가 작을 때 잡음 점 주변에 생기는 반대색 섬, k가 클 때 뭉툭해지는 경계를 관찰해 보세요.
별을 경계 근처에 두면 투표가 3:2처럼 아슬아슬해져요 — 이웃 한 명만 바뀌어도 결과가 뒤집히는 지점이 바로 결정 경계예요.
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
# 훈련 데이터: 2차원 좌표와 클래스 (0=파랑, 1=빨강)
X = np.array([[2.5, 6.0], [3.1, 7.2], [2.0, 5.1],
[7.0, 3.5], [6.4, 2.8], [7.8, 4.4]])
y = np.array([0, 0, 0, 1, 1, 1])
model = KNeighborsClassifier(n_neighbors=5) # 이웃 5명
model.fit(X, y) # '학습'이라 쓰지만 사실은 데이터를 기억만 해요
q = [[5.0, 5.0]] # 새 점 (쿼리)
print(model.predict(q)) # 이웃 5명의 다수결 → 예측 클래스
print(model.predict_proba(q)) # 클래스별 투표 비율