[파이썬][Scipy] kmeans, hierarchy 예제

Scipy를 사용한 k-means 클러스터링과 계층적 클러스터링(hierarchical clustering)의 간단한 예제를 제공하겠습니다.

k-means 클러스터링 예제:

k-means 클러스터링은 데이터를 k개의 그룹으로 클러스터링하는 데 사용됩니다. 아래는 k-means 클러스터링의 간단한 예제입니다.

mport numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.vq import kmeans, vq

# 가상의 데이터 생성
np.random.seed(0)
data = np.random.randn(100, 2)

# k-means 클러스터링 수행
k = 3  # 클러스터 개수
centroids, _ = kmeans(data, k)
cluster_indices, _ = vq(data, centroids)

# 결과 시각화
plt.scatter(data[:, 0], data[:, 1], c=cluster_indices, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='x', s=100)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title(f'k-means 클러스터링 (k={k})')
plt.show()

계층적 클러스터링 예제:

계층적 클러스터링은 클러스터를 계층 구조로 구성하는 클러스터링 방법입니다. 아래는 계층적 클러스터링의 예제입니다.

mport numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage

# 가상의 데이터 생성
np.random.seed(0)
data = np.random.randn(10, 2)

# 계층적 클러스터링 수행
linkage_matrix = linkage(data, method='ward')

# 덴드로그램 그리기
plt.figure(figsize=(8, 6))
dendrogram(linkage_matrix, labels=range(10))
plt.title('계층적 클러스터링 덴드로그램')
plt.xlabel('데이터 포인트')
plt.ylabel('거리')
plt.show()

위의 예제들은 Scipy를 사용하여 k-means 클러스터링 및 계층적 클러스터링을 수행하는 방법을 보여줍니다. 계층적 클러스터링의 경우, 덴드로그램을 사용하여 클러스터 계층 구조를 시각화할 수 있습니다.