클러스터링은 데이터를 비슷한 특성을 가진 그룹으로 나누는 기술입니다. 이는 데이터 분석과 머신러닝에서 많이 사용되며, 사전에 정의된 클래스 레이블이 없는 경우에 특히 유용합니다. 이번 포스트에서는 파이썬의 scikit-learn 라이브러리를 사용하여 클러스터링을 수행하는 방법을 알아보겠습니다.
scikit-learn 라이브러리
scikit-learn은 파이썬 기반의 머신러닝 라이브러리로, 클러스터링을 비롯한 다양한 머신러닝 작업을 간편하게 수행할 수 있도록 도와줍니다. scikit-learn은 다양한 클러스터링 알고리즘을 제공하며, 사용하기 쉬운 API를 제공하므로 빠르고 효율적인 클러스터링을 수행할 수 있습니다.
K-means 클러스터링
K-means는 가장 간단하고 널리 사용되는 클러스터링 알고리즘 중 하나입니다. 이 알고리즘은 데이터를 K개의 클러스터로 나누는데, 각 클러스터의 중심과 데이터 포인트 사이의 거리를 최소화하는 방식으로 동작합니다.
아래는 scikit-learn에서 K-means 클러스터링을 수행하는 예시 코드입니다:
from sklearn.cluster import KMeans
# 데이터 준비
X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]
# K-means 모델 생성
kmeans = KMeans(n_clusters=2)
# 클러스터링 수행
kmeans.fit(X)
# 클러스터 할당 결과 확인
labels = kmeans.labels_
print(labels)
위 코드에서는 2개의 클러스터로 데이터를 분류하는 K-means 모델을 생성하고, fit
메서드를 사용하여 클러스터링을 수행합니다. labels_
속성을 통해 각 데이터 포인트에 할당된 클러스터의 인덱스를 확인할 수 있습니다.
Hierarchical 클러스터링
Hierarchical 클러스터링은 계층 구조를 가지며 데이터를 클러스터로 분할하는 알고리즘입니다. 이 알고리즘은 거리나 유사도 기반으로 클러스터를 묶어가며 결과를 탐색적으로 제공합니다.
아래는 scikit-learn에서 Hierarchical 클러스터링을 수행하는 예시 코드입니다:
from sklearn.cluster import AgglomerativeClustering
# 데이터 준비
X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]
# Hierarchical 클러스터링 모델 생성
hc = AgglomerativeClustering(n_clusters=2)
# 클러스터링 수행
hc.fit(X)
# 클러스터 할당 결과 확인
labels = hc.labels_
print(labels)
위 코드에서는 2개의 클러스터로 데이터를 분류하는 Hierarchical 클러스터링 모델을 생성하고, fit
메서드를 사용하여 클러스터링을 수행합니다. labels_
속성을 통해 각 데이터 포인트에 할당된 클러스터의 인덱스를 확인할 수 있습니다.
클러스터 시각화
클러스터링 결과를 시각적으로 확인하는 것은 분석의 중요한 단계입니다. scikit-learn은 시각화를 위한 다양한 도구를 제공하며, matplotlib
을 사용하여 클러스터를 그래프로 표현할 수 있습니다.
예시 코드에서는 K-means 클러스터링 결과를 시각화하는 방법을 보여줍니다:
import matplotlib.pyplot as plt
# 데이터 준비
X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]
# K-means 모델 생성 및 클러스터링 수행
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
# 클러스터 할당 결과 확인
labels = kmeans.labels_
# 클러스터 시각화
for i, point in enumerate(X):
color = 'red' if labels[i] == 0 else 'blue'
plt.scatter(point[0], point[1], color=color)
plt.show()
위 코드에서는 K-means 클러스터링 결과를 산점도로 시각화합니다. 각 클러스터에 따라 서로 다른 색으로 데이터 포인트를 표시합니다.
이처럼 scikit-learn을 사용하여 클러스터링을 수행하고, 시각화를 통해 결과를 확인하는 방법을 살펴보았습니다. scikit-learn의 다양한 클러스터링 알고리즘을 활용하여 여러분의 데이터를 탐색하고, 의미있는 그룹으로 나눌 수 있습니다.