Nearest neighbor classifier는 데이터 분류 알고리즘의 한 종류이다. 자세한 설명은 머신러닝 기법의 KNN 부분 참고.
이미지 분류하는 작업을 nearest neighbor로 한다고 가정하자. 해당 이미지가 어떤 종류인지 분석을 할 때, 판단하려는 이미지와 기준 이미지가 얼마나 차이나는지를 계산해야 할 것이다. 컴퓨터가 인식하기에 이미지는 픽셀값을 가지는 2D matrix이므로, 두 matrix 사이의 거리 메트릭을 활용하면 되겠다. 이를 활용해서 Nearest neighbor classifier를 클래스로 구현하면 아래와 같다.
import numpy as np
class NearestNeighbor:
def __init__(self):
pass
def train(self, images, labels) # 이미지와 라벨로 학습
self.images = images
self.labels = labels
def predict(self, test_image): # 이미지가 1D vector라고 가정
min_dist = sys.maxint
for i in range(self.images.shape[0]):
dist = np.sum(np.abs(self.images[i, :] - test_image))
if dist < min_dist:
min_dist = dist
min_index = i
return self.labels[min_index]
그러나 Nearest neighbor는
이미지 분류라는 작업에서는 거의 사용되지 않는 알고리즘이다.