이미 알고 있는 내용은 최대한 배제하고, 다시 복습할 필요성이 있는 부분만 기재하였다.
Train Phase
Test Phase
traditional NN Classifier의 한계
→ 당연히 연산 시간이 많이 소모될 수 밖에 없음
→ 이미지 분류 task에서 유사도 metric을 design하기는 어렵다(= metric과 metric사이의 유사도
이미지(행렬) 사이의 유사도를 측정하는 Metric
L1
L2
import numpy as np
class NearestNeighbor:
def __init__(self): # 생성자 정의
pass
def train(self, images, labels): # tain
self.images = images # # 입력받은 데이터-레이블 단순 저장
self.labels = labels
def predict(self, test_image): # prediction
# 가정: 각 이미지가 1차원 벡터로 변환되어 있음
min_dist = sys.maxint # Python에서 최대 정수
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.labels[min_index] # 레이블 반환