IT/ML
[sklearn] kNN(k-Nearest Neighbors)
aram
2022. 11. 11. 00:15
k-최근접 이웃(KNN) 분류
- 게으른 학습기
- 지도 학습에 활용되는 가장 단순한 종류의 알고리즘
- 주어진 개수만큼 가까운 멤버들과 비교하여 그룹으로 분류 (Nearest Neighbour)
- 모델 훈련X == new data가 들어오면 그때그때 분류
- 가장 가까운 k 개의 샘플에서 다수의 클래스를 그 샘플의 클래스로 예측
- 데이터와 데이터 사이의 거리를 구해야 함
> https://cafe.naver.com/soojebi/151442 의 문제
1. K값에 따라 결과가 달라질 수 있다.
2. 학습 절차 없이 새로운 데이터가 들어 올때 거리를 측정한다.
3. 거리 기반의 모형이므로 예측 변수에 대한 표준화가 필요하다.
KNeighborsClassifier(n_neighbors, p, metric, ...)
- metric : 사용할 거리 측정 방법을 지정
='minkowski' : 유클리드 거리(Euclidean distance) 와 맨하튼 거리(Manhattan distance)를 일반화 한 것
- p
=1 ( 맨하튼 거리: 격자를 이루는 선이 길이라고 생각하고 그 길이를 따라 잰 거리 )
=2 ( 유클리드 거리: 좌표계에 두 점이 있을 때 두 지점의 최단거리 )
- n_jobs : 컴퓨터 코어를 사용할지 결정
- algorithm : 가장 가까운 이웃을 계산하기 위한 방법
- weights : 가중치 부여
= 'distance' : 멀리 떨어진 샘플보다 가까운 이웃의 투표에 가중치 더 부여
- radius
: 고정 영역의 반지름을 지정하여 이웃 샘플 결정
( 샘플의 클래스가 주어진 반지름 r 이내에 있는 모든 샘플의 클래스로부터 예측)
- outlier_label : 반지름 내에 다른 샘플이 하나도 없는 샘플에 부여할 레이블 지정
#K-nearest neighbors 하이퍼파라미터
- n_neighbors: int, default=5
- weights: {‘uniform’, ‘distance’} or callable, default=’uniform’
- algorithm: {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’
- leaf_size: int, default=30
- p: int, default=2
- KNeighborsClassifier
예시코드]
from sklearn.neighbors import NearestNeighbors
hyperparameters = {
'n_neighbors' : list(range(1,5)),
'weights' : ['uniform', 'distance'],
'algorithm' : ['auto', 'ball_tree', 'kd_tree', 'brute'],
'leaf_size' : list(range(1,10)),
'p' : [1,2]
}
* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.
728x90