[Python] K-means 군집화 수행하기

728x90

Python에서 K-means 군집화 수행 방법

K-means 군집화는 데이터 마이닝과 머신러닝에서 널리 사용되는 알고리즘이다. Python에서는 scikit-learn 라이브러리를 사용하여 간단하게 K-means를 구현할 수 있다. 본 글에서는 K-means 알고리즘을 Python에서 적용하는 방법을 설명한다.

1. 필요한 라이브러리 설치 및 불러오기

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

2. 예제 데이터 생성

K-means 알고리즘을 적용할 샘플 데이터를 생성한다. 이를 위해 make_blobs 함수를 사용한다.

# 랜덤 데이터 생성
X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.6, random_state=42)

3. K-means 모델 적용

# K-means 모델 생성 및 학습
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans.fit(X)

4. 군집 중심 확인

# 군집 중심 좌표 확인
print("Cluster Centers:")
print(kmeans.cluster_centers_)

5. 군집 결과 시각화

# 군집 결과를 그래프로 표시
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis', alpha=0.6)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='red', marker='X', label='Centroids')
plt.title('K-means Clustering')
plt.legend()
plt.show()

6. 적절한 K값 찾기 (엘보우 방법)

적절한 K값을 찾기 위해 엘보우 방법을 사용할 수 있다. 이는 K값을 변경하며 inertia_ 값을 확인하는 방식이다.

inertia = []
k_values = range(1, 10)
for k in k_values:
    km = KMeans(n_clusters=k, random_state=42)
    km.fit(X)
    inertia.append(km.inertia_)

plt.plot(k_values, inertia, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('Inertia')
plt.title('Elbow Method for Optimal K')
plt.show()

결론

이 글에서는 Python의 scikit-learn을 사용하여 K-means 알고리즘을 적용하는 방법을 설명했다. 군집 개수를 선택하는 방법(엘보우 기법)까지 포함하여 실전에서 활용할 수 있도록 설명하였다. 적절한 K값을 선택하는 것이 중요한 만큼, 데이터의 특성을 고려하여 K를 설정하는 것이 중요하다.

728x90