더북(TheBook)

유클리드 거리

박쥐를 분류하려면 가장 먼저 거리를 계산해야 한다. 거리를 계산하는 방법으로는 유클리드 거리(Euclidean distance)를 많이 사용한다. 가령 좌표평면에서 두 점 (a1, a2)와 (b1, b2)의 거리를 구하려면 피타고라스의 정리를 이용한다.

▲ 그림 7-13 유클리드 거리는 피타고라스의 정리를 이용해 구한다

공식은 다음과 같다. 두 점의 수평거리(a1 - b1)와 수직거리(a2 - b2)를 이용해 제곱하고, 더하고, 제곱근을 취하면 거리(d)를 얻을 수 있다.

다음은 유클리드 거리를 파이썬 함수로 만든 것이다. euclidean_distance 함수는 두 개의 매개변수 pt1, pt2를 받고 루프 for i in range(len(pt1))이 수행되는 동안 공식 d에 따라 거리를 구한다.

def euclidean_distance( pt1, pt2 ):
    distance = 0
    for i in range( len( pt1 ) ):
        distance += ( pt1[ i ] - pt2[ i ] )**2
    return distance ** 0.5

위의 euclidean_distance 함수는 math 라이브러리의 제곱근 함수 sqrtzip 함수를 이용해 간단히 만들 수 있다.

import math

def euclidean_distance( pt1, pt2 ):
    return math.sqrt( sum( [ ( d1 - d2 )**2 for d1, d2 in zip( pt1, pt2 ) ] ) )

# 2차원 공간의 두 점 [5, 4], [1, 7]의 거리를 구하면 다음과 같다
print( euclidean_distance( [5, 4], [1, 7] ) )
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.