Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 클러스터링 결과 산점도 그리는 방법

클러스터링 산점도란?

데이터 분석에서 클러스터링(Clustering) 결과를 시각화할 때 가장 널리 사용되는 방법이 바로 산점도(Scatter Plot)입니다. 각 데이터 포인트를 좌표 평면에 점으로 표시하고, 클러스터별로 색상을 다르게 지정하면 군집의 분포와 중심점 위치를 한눈에 파악할 수 있습니다.

파이썬에서는 MatplotlibNumPy 라이브러리만 있으면 손쉽게 구현할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.

구현 단계

파이썬에서 클러스터링용 산점도를 만들려면 다음 단계를 따르면 됩니다.

  1. 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  2. NumPy를 사용하여 x, y 데이터 포인트, 클러스터 라벨, 중심점(centers)을 생성합니다.
  3. 새 그림을 생성하거나 기존 그림을 활성화합니다.
  4. 현재 그림에 서브플롯(subplot) 배치를 추가합니다.
  5. scatter() 메서드로 데이터 포인트를 산점도에 그립니다.
  6. 중심점(centers) 데이터를 반복하며 scatter() 메서드로 마커를 별도로 표시합니다.
  7. 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 변수에 넣어주면 되므로, 이 예제는 실전 프로젝트에서도 그대로 활용하기 좋은 기본 템플릿입니다.