[python] scikit-learn을 활용한 군집화

군집화(Clustering)는 비지도 학습의 일종으로 데이터를 서로 비슷한 특성을 가지는 여러 그룹으로 묶는 기법입니다. 이를 통해 데이터의 패턴을 파악하거나 유사한 데이터들을 하나의 그룹으로 분류할 수 있습니다.

scikit-learn은 파이썬에서 머신러닝을 위한 툴킷으로 많이 사용됩니다. scikit-learn을 사용하여 군집화를 수행하는 방법을 알아보겠습니다.

데이터 준비

먼저, 군집화에 사용할 데이터를 준비해야 합니다. 예를 들어, 아이리스(iris) 데이터셋을 사용해보겠습니다. 이 데이터셋은 꽃의 꽃잎과 꽃받침의 길이와 너비를 기반으로 세 가지 종으로 분류된 데이터입니다.

import pandas as pd
from sklearn.datasets import load_iris

# 데이터셋 로드
iris = load_iris()

# 데이터프레임 생성
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)

# 데이터 확인
print(df.head())

군집화 모델 생성 및 학습

scikit-learn에서는 다양한 군집화 알고리즘이 제공됩니다. 예를 들어, K-Means 알고리즘을 사용하여 군집화를 수행해보겠습니다.

from sklearn.cluster import KMeans

# 모델 생성
kmeans = KMeans(n_clusters=3)

# 모델 학습
kmeans.fit(df)

# 예측
labels = kmeans.predict(df)

# 결과 확인
df['cluster_label'] = labels
print(df.head())

결과 시각화

군집화 결과를 시각화하여 확인할 수 있습니다. 예를 들어, 꽃잎과 꽃받침의 길이와 너비를 x, y축으로 한 산점도를 그려보겠습니다.

import matplotlib.pyplot as plt

# 결과 시각화
plt.scatter(df['sepal length (cm)'], df['sepal width (cm)'], c=df['cluster_label'])
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.show()

위의 코드를 실행하면 군집화 결과를 시각화한 그래프를 확인할 수 있습니다.

결론

scikit-learn을 사용하여 군집화를 수행하는 방법을 알아보았습니다. 군집화는 데이터의 특성을 파악하거나 유사한 그룹을 분류하는 데 유용한 기법입니다. scikit-learn은 다양한 군집화 알고리즘을 제공하여 다양한 데이터셋에 대한 군집화를 수행할 수 있습니다.

참고 자료