-
파이썬 KNN<Python>/[Model] 2021. 12. 24. 17:39728x90
knn
from sklearn.neighbors import KNeighborsClassifier model = KNeighborsClassifier(n_neighbors=4, metric='euclidean')
knn 파라미터
algorithm = {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’
# 가장 가까운 이웃을 계산하는 데 사용되는 알고리즘:# Brute Force
최접근 이웃의 빠른 계산은 기계학습에서 활발한 리서치 분야이다. 가장 초보수준의 이웃 탐색 구현은 데이터셋 내 지점의 모든 쌍의 거리를 억지로(brute-force) 계산하는 것이다. 효율적인 brute-force 이웃 탐색은 작은 데이터 샘플에 대해서는 매우 경쟁력이 있다. 하지만, 샘플의 수가 증가하면, 증가하는 속도보다 더 빠르게 성능이 떨어져서 효율적이지 않다.# K-D Tree
비효율적인 brute-force 접근법을 해결하기 위해서, 다양한 트리-기반 데이터 구조가 발명됐다. 일반적으로 이러한 구조는 샘플에 대한 거리 집계 정보를 효율적으로 인코딩해서 필요한 거리 계산 수를 줄이려고 시도한다. 기본적인 생각은 지점 A의 거리가 지점 B로 부터 아주 멀고 B가 C에 아주 가까우면, A가 C에서 아주 멀다는 것을 알수 있다. 이 때 명시적으로 거리를 측정할 필요가 없다. 이러한 방법으로 최근접 이웃 탐색의 계산 비용을 줄일 수 있다. brute-force에 비해서 상당히 개선된 방식이다. 이러한 집계정보를 이용하는 초기 접근법은 KD트리 데이터 구조(K-Dimensional Tree)로 알려졌다.# Ball Tree
더 높은 차원에서 KDTree의 비효율성을 해결하기 위해서 ball tree 데이터 구조가 개발됐다. KDTree는 데이터를 카티시안 축으로 분할한다. Ball Tree는 데이터를 일련의 네스팅 하이퍼-스피어 형태로 분할한다. 이러한 방식은 KD Tree 보다 트리를 만드는데 비용이 더 발생한다. 하지만, 매우 구조화된 데이터 또는 심지어 매우 높은 차원에서 아주 효율적인 데이터 구조를 갖는다.
leaf_size = int, default=30
# BallTree 또는 KDTree에 전달된 리프 크기p = int, default=2
# Minkowski 메트릭에 대한 검정력 매개변수입니다.
# p=1일 때 manhattan_distance(l1), euclidean_distance(l2) p=2. 임의의 p에 대해 minkowski_distance(l_p)가 사용됩니다.n_neighbors = int, default=5
weights = {‘uniform’, ‘distance’} or callable, default=’uniform’
# 예측에 사용되는 가중치 함수입니다.
# 'uniform' : 균일한 무게. 각 이웃의 모든 포인트는 동일하게 가중치가 부여됩니다.
# 'distance' : 거리의 역수로 가중치를 부여합니다. 이 경우 쿼리 포인트의 가까운 이웃이 멀리 있는 이웃보다 더 큰 영향을 미칩니다.metric = str or callable, default=’minkowski’
# 나무에 사용할 거리 메트릭metric_params = dict, default=None
n_jobs = int, default=None
model.fit(X_train, y_train['gender']) print(model.score(new_X_train, new_y_train)) predict = model.predict_proba(X_val) pred = predict[:, 1] from sklearn.metrics import roc_auc_score print(roc_auc_score(y_val, pred))
728x90'<Python> > [Model]' 카테고리의 다른 글
파이썬 LinearSVC (0) 2021.12.24 파이썬 SVM (0) 2021.12.24 파이썬 랜덤포레스트 (0) 2021.12.24 파이썬 로지스틱 분류 (0) 2021.12.24 파이썬 결정나무 (0) 2021.12.24