본문 바로가기
  • 콩's 코딩노트
머신러닝/머신러닝 라이브러리

머신러닝의 종류 (5) - Hierarchical Clustering 그리고 Dendrogram의 대해

by Cong_S 2022. 5. 9.

 

다음과 같은 데이터 셋이 있을 때 비슷한 데이터끼리 묶으려고 한다. 

Hierarchical Clustering (계층적 군집) 을 이용할 것이다.

 

그렇다면 이 때 데이터를 몇 개의 클러스터로 묶어야 할까?

이 때 사용하는 것이 Dendrogram이다. 

 

import scipy.cluster.hierarchy as sch

sch.dendrogram(sch.linkage(X, method = 'ward'))
plt.title('Dendrogram')
plt.xlabel('Customers')
plt.ylabel('Eculidean Distances')
plt.show()

다음과 같은 문장으로 Dendrogram 을 만들어보자.

차트를 보다시피 가까이 있는 (비슷한) 데이터끼리 묶고 묶고 묶이는 최종에는 하나의 구조로 묶이는

계층적 구조로 이루어져있으며

줄기가 커지면 커질수록 유사성은 떨어지고 멀리 떨어진 데이터라는 해석을 할 수 있다.

그러므로 우리는 너무 멀어지지 않고 적당히 줄기를 잘라 클러스터의 개수를 파악하면 된다.

나는 5개의 클러스터를 만들도록 하겠다.

 

from sklearn.cluster import AgglomerativeClustering # 병합적 군집

hc = AgglomerativeClustering(n_clusters= 5)
y_pred = hc.fit_predict(X)
df['Group'] = y_pred

위와 같이 AgglomerativeClustering함수를 불러와 위에서 파악한대로 n_cluster 파라미터에는 5를 입력한다.

 

0부터 4까지 5개의 그룹이 만들어진 것을 확인할 수 있다.

댓글