[파이썬][scikit-learn] scikit-learn에서 클러스터링

클러스터링은 데이터를 비슷한 특성을 가진 그룹으로 나누는 기술입니다. 이는 데이터 분석과 머신러닝에서 많이 사용되며, 사전에 정의된 클래스 레이블이 없는 경우에 특히 유용합니다. 이번 포스트에서는 파이썬의 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의 다양한 클러스터링 알고리즘을 활용하여 여러분의 데이터를 탐색하고, 의미있는 그룹으로 나눌 수 있습니다.