유클리드 거리
박쥐를 분류하려면 가장 먼저 거리를 계산해야 한다. 거리를 계산하는 방법으로는 유클리드 거리(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 라이브러리의 제곱근 함수 sqrt와 zip 함수를 이용해 간단히 만들 수 있다.
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] ) )