JUstory
Nearest Neighbor Classifier 본문
Nearest Neighbor Classifier
: 테스트 데이터에 대해 가장 가까운 학습 데이터 포인트를 k개 찾고, 해당 레이블을 사용하여 예측
$$L{_1}(A,B) = \sum_{i,j}\left| A{_i,_j} - B{_i,_j}\right|$$
$$L{_2}(A,B) = \sqrt{\sum_{i,j} (A{_i,_j} - B{_i,_j})^{2}}$$
import numpy as np
# k = 1
class NearestNeighbor:
def __init__(self):
pass
def train(self, images, labels):
self.images = images
self.labels = labels
def predict(self, test_image):
min_dist = sys.maxsize
for i in range(self.images.shape[0]): # 훈련 이미지 하나씩 돌기
dist = np.sum(np.abs(self.images[i, :] - test_image)) # L1거리
if dist < min_dist:
min_dist = dist
min_index = i
return self.label[min_index]
가장 가까운 k개의 점들에게 과반수 득표를 받는다.
k가 커지면 커질수록 noise 데이터를 잘 잡아낸다. 하지만 prediction time은 오래 걸린다는 단점이 있다.
'딥러닝' 카테고리의 다른 글
[딥러닝] 활성화 함수 Activation Function (0) | 2024.09.04 |
---|---|
Backpropagation - 경사하강법 (0) | 2024.08.26 |
[딥러닝 기초] Linear Regression 가중치 구하기 (0) | 2024.08.14 |
[딥러닝] Linear Regression(2)_손실함수 (0) | 2024.08.12 |
[딥러닝] Linear Regression(1)_Forward (0) | 2024.08.12 |