Dendrogram, 최적의 클러스터 갯수 찾기
아래의 데이터프레임 Annual Income (k$), Spending Score (1-100) 컬럼을 변수 X 로 두고 Dendrogram 을 그려볼 것이다.

필요한 라이브러리를 임포트 해준 후 ,
덴드로그램을 이용하여서 데이터들을 군집화 한 것이다.
아래의 덴드로그램은 너무 지저분 하기 때문에, 큰 영역으로 클러스터를 다섯개까지만 분류 할 것이다.
import scipy.cluster.hierarchy as sch
sch.dendrogram( sch.linkage(X, method= 'ward') )
plt.title('Dendrogram')
plt.xlabel('Customers')
plt.ylabel('Eculidean Distance')
plt.show()

필요한 라이브러리를 임포트 해준 후,
변수 hc 에 인공지능 AgglomerativeClustering 을 저장해준다. 괄호 안에 클러스트 갯수는 위 차트를 보고 정한 5 로 지정해준다.
fit_predict (X) 를 이용하여서 변수 y_pred 에 저장을 해주었다.
데이터프레임에 새로운 컬럼을 생성하여 변수 y_pred 의 값들을 저장해준 것이다.
from sklearn.cluster import AgglomerativeClustering
hc = AgglomerativeClustering(n_clusters= 5)
y_pred = hc.fit_predict(X)
df['Group'] = y_pred

차트를 그려서 그룹화한것을 확인해보면 아래와 같은 결과가 나온다.
plt.figure(figsize=[12,8])
plt.scatter(X.values[y_pred == 0, 0], X.values[y_pred == 0, 1], s = 100, c = 'red', label = 'Cluster 1')
plt.scatter(X.values[y_pred == 1, 0], X.values[y_pred == 1, 1], s = 100, c = 'blue', label = 'Cluster 2')
plt.scatter(X.values[y_pred == 2, 0], X.values[y_pred == 2, 1], s = 100, c = 'green', label = 'Cluster 3')
plt.scatter(X.values[y_pred == 3, 0], X.values[y_pred == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4')
plt.scatter(X.values[y_pred == 4, 0], X.values[y_pred == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5')
plt.title('Clusters of customers')
plt.xlabel('Annual Income (k$)')
plt.ylabel('Spending Score (1-100)')
plt.legend()
plt.show()

'Machine Learning' 카테고리의 다른 글
| K-Means Clustering - wcss 로 기준점 찾기 (0) | 2022.12.05 |
|---|---|
| joblib 라이브러리를 이용하여서 인공지능 모델 저장하기 (0) | 2022.12.02 |
| Decision Tree , Random Forest 로 데이터 분류하기 (0) | 2022.12.02 |
| Grid search - 모델 성능을 최고로 만드는 파라미터 값을 찾아준다 (0) | 2022.12.02 |
| KNN - K-Nearest Neighbo 로 데이터 분류하기 (0) | 2022.12.02 |