비지도 학습은 레이블이 없는 데이터에서 패턴이나 구조를 발견하는 머신러닝 알고리즘입니다. 이번 블로그 포스트에서는 파이썬을 이용하여 비지도 학습을 구현하는 샘플 프로젝트를 소개하고자 합니다.
K-평균 군집화
K-평균 군집화는 가장 기본적이고 널리 사용되는 비지도 학습 알고리즘 중 하나입니다. 이 알고리즘은 주어진 데이터를 K개의 클러스터로 나누는 역할을 합니다. 각 클러스터는 같은 그룹에 속하는 유사한 데이터들의 모음입니다.
from sklearn.cluster import KMeans
# 데이터 준비
data = [
[1, 2],
[1.5, 1.8],
[5, 8],
[8, 8],
[1, 0.6],
[9, 11]
]
# K-평균 군집화 모델 생성
kmeans = KMeans(n_clusters=2)
# 모델 학습
kmeans.fit(data)
# 클러스터 할당 결과 확인
labels = kmeans.labels_
print(labels)
위의 코드는 K-평균 군집화를 사용하여 주어진 데이터를 2개의 클러스터로 나누는 예시입니다. 데이터는 2차원 좌표로 표현되며, KMeans
클래스를 사용하여 모델을 만들고 fit
메서드를 사용하여 학습을 진행합니다. labels
변수에는 각 데이터들이 할당된 클러스터의 번호가 저장됩니다.
DBSCAN
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)은 밀도 기반 군집화 알고리즘입니다. 이 알고리즘은 데이터 포인트들의 밀도를 기준으로 클러스터를 구분하기 때문에 데이터의 분포에 더 잘 적응할 수 있습니다.
from sklearn.cluster import DBSCAN
# 데이터 준비
data = [
[1, 2],
[1.5, 1.8],
[5, 8],
[8, 8],
[1, 0.6],
[9, 11]
]
# DBSCAN 모델 생성
dbscan = DBSCAN(eps=0.3, min_samples=2)
# 모델 학습
dbscan.fit(data)
# 클러스터 할당 결과 확인
labels = dbscan.labels_
print(labels)
위의 코드는 DBSCAN을 사용하여 주어진 데이터를 군집화하는 예시입니다. eps
는 이웃 포인트를 탐색할 거리, min_samples
는 클러스터로 인정할 최소 이웃 수를 설정하는 파라미터입니다.
요약
파이썬의 머신러닝 라이브러리인 scikit-learn을 이용하여 비지도 학습을 구현하는 방법을 살펴보았습니다. K-평균 군집화와 DBSCAN은 그저 비지도 학습의 일부에 불과하지만, 이 두 알고리즘을 통해 비슷한 데이터끼리 묶이는 클러스터를 만들고, 데이터의 패턴을 관찰할 수 있습니다. 이러한 비지도 학습 알고리즘들은 데이터 분석과 클러스터링, 이상 탐지와 같은 분야에서 유용하게 활용될 수 있습니다.