Data Science/실습

DS 실습 17- KNN(K-Nearest Neighbor)

에너지_2 2024. 12. 7. 22:13
728x90
반응형

- 새로운 값은 기존의 데이터를 기준으로 가장 가까운 k개의 최근접 값을 기준으로 분류됨

- k가 짝수되는 것은 피하도록

- 과적합: k 가 1에 가까울수록 <-> 과소적합: k가 클수록

 

KNN 회귀(Regression)

- 분류모델과 같고, k 개의 인접한 자료의 (가중)평균으로 예

 

 

KNN알고리즘은 종속변수가 어떤 것인지에 따라  분류/ 회귀로 나뉘어짐

 

  • 분류(Classification): 종속변수가 범주형(categorical) 데이터일 때.
    • 예: "고객이 구매할 것이다(Yes/No)", "이메일이 스팸이다/아니다". 클래스 레이블 (0, 1, "Yes", "No")
  • 회귀(Regression): 종속변수가 연속형(continuous) 데이터일 때.
    • 예: "아파트의 가격은 얼마인가?", "내일의 주식 가격은 얼마일까?". 실수 값 (예: 300.5, 42.7)

 

from sklearn.neighbors import KNeighborsClassifier # k-NN
from sklearn.neighbors import KNeighborsRegressor # k-NN
# 공통 attribute
# 'p' : 거리계산 알고리즘 선택
p : int, default=2
    Power parameter for the Minkowski metric. When p = 1, this is
    equivalent to using manhattan_distance (l1), and euclidean_distance
    (l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used.



sklearn - KNeighborsClassifier()

- KNN 분류 모델을 학습하기 위한 함수

- n_neighbors (= k) : 학습시 고려할 이웃 데이터의 개수를 지정. 짝수는 피하도록

분류모델이어서 df['is_setosa' ] 변수 생성하여 진행

 

 

sklearn - KNeighborsRegressor()

- KNN 회귀 모델을 학습하기 위한 함수

 

 

ex) 당뇨 발생 여부를 예측하기 위해 임신 횟수, 혈당, 혈압을 사용할 경우 그 정확도는 얼마인가?

-> 예측하기 위해 필요한 것은 종속변수이다.

-> 여기서 종속변수를 의미하는 '당뇨 발생 여부'는 Yes(1), No(0) 값을 갖기 때문에 범주형 데이터이다. 때문에,

분류 모델을 만들 수 있는  KNeighborsClassifier 함수를 사용해야한다.

 

 

https://sometipsfor.tistory.com/32#:~:text=%EB%8D%94%EB%B3%B4%EA%B8%B0-,KNN,-%2D%C2%A0%20n_neighbors%C2%A0(%3D%20k

 

반응형
300x250

 

728x90
반응형