본문으로 건너뛰기
실습하기

클러스터링 입문 (K-평균)

클러스터링비지도 학습 방법으로, 목표는 레이블 없이 유사한 데이터 포인트를 군집으로 묶는 것입니다.

가장 널리 쓰이는 알고리즘 중 하나가 K-평균(K-Means)입니다.


K-평균은 어떻게 동작하나요

다음은 K-평균의 단계입니다.

  1. k 선택: 클러스터(군집) 개수를 정합니다.
  2. 초기화: k개의 클러스터 중심을 무작위로 설정합니다.
  3. 포인트 할당: 각 포인트를 가장 가까운 중심에 할당합니다.
  4. 중심 업데이트: 각 클러스터에 속한 포인트들의 평균으로 중심을 갱신합니다.
  5. 반복: 클러스터 할당이 더 이상 바뀌지 않을 때까지 3-4단계를 반복합니다.

K-평균은 같은 클러스터 내의 포인트들과 그 클러스터 중심 사이의 거리를 최소화하려고 합니다.


K-평균을 사용할 때

다음과 같은 조건에서 K-평균을 사용하면 좋습니다.

  • 미리 정해진 레이블 없이 유사도 기준으로 데이터를 묶고 싶을 때
  • 데이터셋이 수치형 특성으로 구성되어 있고 차원 수가 과도하게 크지 않을 때
  • 데이터에 비교적 뚜렷한 군집이 존재한다고 예상될 때

예시: 붓꽃(Iris) 데이터 클러스터링

다음 예시는 K-평균을 사용해 붓꽃(Iris) 데이터셋을 클러스터링하는 방법을 보여줍니다.

K-평균 예제
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 데이터 불러오기 (시각화를 위해 처음 두 개 특성만 사용)
iris = load_iris()
X = iris.data[:, :2]

# K-평균 적용
kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(X)

# 클러스터 시각화
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', edgecolor='k')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
s=200, c='red', marker='X', label='Centers')
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
plt.title("K-Means Clustering (Iris)")
plt.legend()
plt.show()

핵심 요약

  • 비지도 학습은 레이블이 주어지지 않는다는 뜻입니다.
  • K-평균은 클러스터 내부 거리 합을 최소화해 데이터를 k개의 군집으로 묶습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!