
Data Science
298
20.6
상향식 계층 군집화
군집화를 할 수 있는 다른 방법으로는 상향식으로 군집들을 묶는 방법이 있다.
이것은 다음과 같은 방법으로 할 수 있다.
1
. 각 데이터 포인트를 하나의 군집으로 간주한다.
2
. 군집이 두 개 이상이라면 가장 가까운 두 개의 군집을 찾아 하나의 군집으로
묶는다.
위의 반복 연산이 완전히 종료되면 최종적으로 단 하나의 거대한 군집만이 남는
다. 다만, 군집들을 묶어 나가는 중간 과정을 모두 기록해 두기 때문에, 언제든
묶인 군집을 다시 풀 수 있다. 예를 들어 세 개의 군집을 원한다면 마지막 두 번
의 병합만 되돌리면 된다.
군집을 표현할 때는 간단한 표기법을 쓰자. 데이터 값은
NamedTuple
로 표현된
잎(
leaf
) 군집에 넣도록 하자.
from typing import NamedTuple, Union
class Leaf(NamedTuple):
value: Vector
leaf1 = Leaf([10, 20])
leaf2 = Leaf([30, -15])
이를 이용해 역시
NamedTuple
로 표현되는 병합된 군집을 만들 것이다.
class Merged(NamedTuple):
children: tuple
order: int
merged = Merged((leaf1, leaf2), order=1)