본문 바로가기
Python/MachineLearning

K - Nearest Neighbor - 개념

by 하니__ 2024. 4. 15.

 

 

좌측의 그림처럼 그룹된 데이터들이 존재할때

우측의 그림처럼 새로운 데이터가 저 위치에 나타났을때 어떤 그룹으로 가는게 맞을까

 

일단 KNN이 무슨 뜻인가

 

K 는 상수 즉 몇개인지 숫자를 의미한다

Nearest Neighbors 는 가장 가까이 이웃한것을 의미한다

 

 

그러므로

 

가장 가까이에 이웃한 그룹이 어느쪽에 있는지가 관건이다

 

 

 

 

K 라는 상수를 5라고 지정하면 가장 가까이에 근접한 5개의 데이터를 찾아

더 많이 가까운 데이터쪽으로 합쳐지는것을 뜻한다

물론 짝수라면 2:2, 3:3, 4:4등 결과가 안나올수 있으니 무조건 홀수로 한다

 

 

 

 

 

from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors = 3)

 

 

코드를 짤때 전의 리니어리그레션과 로지스틱리그레션과 다른점은 

클래시파이어 파라미터안에 

앞서 말한 상수 K

n_neighbors =

를 지정할 수 있으며

 

숫자에 따라 결과가 다를 수 있으니 더 좋은 결과가 나올때까지 여러번 해보면 좋겠다

 

 

 
classifier.fit(X_train,y_train)
y_pred = classifier.predict(X_test)
from sklearn.metrics import confusion_matrix, accuracy_score
cm = confusion_matrix(y_test, y_pred)
cm
array([[50,  8],
       [ 3, 39]], dtype=int64)
accuracy_score(y_test,y_pred)
0.89

 

 

 

해당 이웃된 3개를 찾는 결과에선 정밀도가 89%로 나오게 됐다

 

5개를 찾는 결과에선 88%로 나오며 다르게 나올수 있다는것을 확인했고

 

좀 더 좋은 결과값을 주는 이웃의 숫자를 찾는것이  

 

 

중요 하다