Hierarchical Clustering
계층적 군집이란
가까운 두개데이터끼리 묶고 또 그 묶음과 가까운 데이터를 묶고 이런식으로 완전히 모든 데이터가 묶일때 까지 작업하는 알고리즘
유사 개채끼리 계속 군집화를 수행하다 보니 k-means와 달리 클러스팅갯수를 사전에 정하지 않아도가능하다
개체들이 결합되는 순서를 나타내는 트리형태의 구조인 덴드로그램을 통해 시각적으로 k의 갯수를 쉽게 정할 수 있다.
데이터는 수입별 구매점수를 의미
이데이터를 통해 군집화하여 최적의 그룹으로 나누기
트레이닝 기본
1. nan확인
2.x와y분리
언수퍼 바이즈드 러닝은 결과값이 없기때문에 x데이터는 존재하지만 y데이터는 존재하지 않는다
3.문자열이 있다면 숫자로 바궈주기
4.피셔츠케일링을 통해 값 맞춰주기
5.트레이닝 / 테스트 셋으로 분리시키기
https://seonggongstory.tistory.com/66
import scipy.cluster.hierarchy as sch
sch.dendrogram( sch.linkage(X , method = 'ward') )
plt.title('Dendrogram')
plt.xlabel('Customers')
plt.ylabel('Euclidean Distances')
plt.show()
ward형식의 덴드로그램을 제일 많이 사용
가장 먼 군집을 잘라주면 그게 k값이 된다.(거리가 멀수록 관계가 적어 진다는 뜻이니까)
150에서 자를경우 5개의 군집이 나옴
from sklearn.cluster import AgglomerativeClustering
AgglomerativeClustering(n_clusters=n)
hc.fit_predict(X)
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()
Hierarchical Clustering import scipy.cluster.hierarchy as sch 덴드로그램 sch.dendrogram( sch.linkage(X , method = 'ward') ) plt.title('Dendrogram') plt.xlabel('Customers') plt.ylabel('Euclidean Distances') plt.show() from sklearn.cluster import AgglomerativeClustering AgglomerativeClustering(n_clusters=n) hc.fit_predict(X) plot 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() |
'인공지능 > 머신러닝' 카테고리의 다른 글
[머신러닝6] 데이터평균군집 알고리즘: K-means (0) | 2022.12.05 |
---|---|
[머신러닝5] 의사결정나무: Decision Tree / Random Forest (0) | 2022.12.04 |
가장 적합한 매개변수찾기: grid search (0) | 2022.12.02 |
[머신러닝4] Support Vector Machine (0) | 2022.12.02 |
[머신러닝3] K-Nearest Neighbor (0) | 2022.12.02 |