클러스터링 산점도란?
데이터 분석에서 클러스터링(Clustering) 결과를 시각화할 때 가장 널리 사용되는 방법이 바로 산점도(Scatter Plot)입니다. 각 데이터 포인트를 좌표 평면에 점으로 표시하고, 클러스터별로 색상을 다르게 지정하면 군집의 분포와 중심점 위치를 한눈에 파악할 수 있습니다.
파이썬에서는 Matplotlib와 NumPy 라이브러리만 있으면 손쉽게 구현할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.
구현 단계
파이썬에서 클러스터링용 산점도를 만들려면 다음 단계를 따르면 됩니다.
- 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- NumPy를 사용하여 x, y 데이터 포인트, 클러스터 라벨, 중심점(centers)을 생성합니다.
- 새 그림을 생성하거나 기존 그림을 활성화합니다.
- 현재 그림에 서브플롯(subplot) 배치를 추가합니다.
scatter()메서드로 데이터 포인트를 산점도에 그립니다.- 중심점(centers) 데이터를 반복하며
scatter()메서드로 마커를 별도로 표시합니다. show()메서드를 호출하여 결과를 화면에 출력합니다.
전체 예제 코드
import numpy as np
import matplotlib.pyplot as plt
# 그림 크기 및 자동 레이아웃 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# x, y 데이터 포인트 생성
x = np.random.randn(10)
y = np.random.randn(10)
# 클러스터 라벨과 중심점 정의
cluster = np.array([0, 1, 1, 1, 3, 2, 2, 3, 0, 2])
centers = np.random.randn(4, 2)
# 새 그림 생성 후 서브플롯 추가
fig = plt.figure()
ax = fig.add_subplot(111)
# 데이터 포인트 산점도 그리기 (클러스터별 색상 지정)
scatter = ax.scatter(x, y, c=cluster, s=50)
# 중심점을 빨간색 '+' 마커로 표시
for i, j in centers:
ax.scatter(i, j, s=50, c='red', marker='+')
plt.show()
주요 코드 설명
1. 데이터 포인트와 클러스터
np.random.randn()으로 정규분포를 따르는 난수 x, y 좌표 10개를 생성하고, cluster 배열에는 각 포인트가 속한 군집 번호(0~3)를 담습니다.
2. 색상으로 클러스터 구분하기
ax.scatter(x, y, c=cluster, s=50)에서 c=cluster 인자는 클러스터 번호에 따라 각 점의 색상을 자동으로 다르게 지정하며, s=50은 점의 크기를 결정합니다.
3. 클러스터 중심점 표시하기
중심점 배열 centers(4행 2열)를 순회하며 각 중심 좌표에 빨간색 '+' 마커를 찍습니다. 이렇게 하면 어떤 위치가 각 군집의 대표 지점인지 직관적으로 확인할 수 있습니다.
실행 결과
위 코드를 실행하면 클러스터별로 색상이 구분된 산점도가 그려지고, 각 군집의 중심 위치에는 빨간색 십자(+) 마커가 함께 표시됩니다.
마무리
K-Means 등 실제 클러스터링 알고리즘의 결과를 시각화할 때도 동일한 원리를 적용할 수 있습니다. 알고리즘이 계산한 중심점 좌표를 centers 변수에 넣어주면 되므로, 이 예제는 실전 프로젝트에서도 그대로 활용하기 좋은 기본 템플릿입니다.