머신러닝

머신러닝(15) Hierarchical Clustering으로 데이터를 그룹화하자

개발연습자1 2022. 12. 6. 14:55

이번시간에는 비지도 학습 중 하나인 Hierarchical Clustering으로 데이터를 그룹화 하는 방법을 알아보겠다. 기존에 비지도 학습인 K-Means Clustering하고 다른 방법으로 진행되는 Hierarchical Clustering은 Dendrogam을 통해 데이터 간에 연결 지점을 찾고 머신러닝의 사용자가 그룹을 어떻게 나눌지 판단하는 방법이다. 정확히는 그룹을 사용자가 Dendrogam통해 보고 판단해야 적절한 그룹화를 이루는것이지 머신러닝 자체에서 판단 못하는것은 아니다.

 

코드를 통해 알아보자

 

데이터를 불러오고 적용하는것은 기존에  K-Means Clustering하고 동일하게 진행된다. 비지도 학습은 y데이터가 없고 정규화 또한 진행되지 않고 train test로 나눌 필요가 없다는것을 기억하자

 

#Hierarchical Clustering 함수 호출
import scipy.cluster.hierarchy as sch

#Dendrogam을 그린다.
sch.dendrogram(sch.linkage(X,method='ward'))
plt.title('Dendrogam')
plt.xlabel('Customers')
plt.ylabel('Euclidean Distances')
plt.show()

이런식으로 무수한 데이터가 Dendrogam을 통해 표현된다. 이제 사용자가 판단한다. 

한 여기쯤 선을 그으면 데이터 그룹화가 적절할 것이라고 생각하고 그룹화할 수를 다섯 갈래인 5로잡는다.

 

#함수 실행
from sklearn.cluster import AgglomerativeClustering

#변수에 저장
hc = AgglomerativeClustering(n_clusters=5)

#y_pred에 저장
y_pred = hc.fit_predict(X)

df['Group']= y_pred
import seaborn as sb
sb.scatterplot(data=df, x='Annual Income (k$)',y='Spending Score (1-100)')
plt.show()

 그룹이 비교적 잘 형성되어 있는것을 알수 있다.

반응형