K-Means Clustering
Clustering
- 개인 또는 개체 중에서 유사한 것들을 몇개의 집단으로 그룹화 하는 방법.
- 데이터 자체에만 의존하여 자료를 탐색하고 요약하는 분석 기법.
- 전체 데이터를 군집을 통해 잘 구분하는 것이 목적.
- 모델로는 Hierarchical Clustering, K-means Clustering 등이 있다.
군집의 유형
- 상호배반적(disjoint) 군집 : 상호 배반적 군집(오직 하나의 군집에만 속함)
- 계보적 군집(hierarchical) 군집(한 군집이 다른 군집의 내부에 포함되는 형식)
- 중복(overlapping) 군집(두 개이상의 군집에서 동시에 관찰되는 형식)
- 퍼지(fuzzy) 군집(관찰단위가 소속되는 특정한 군집이 아니라, 각 군집에 속할 가능성을 표현)
K-Means Clustering
- k-means 에서는 사전의 K를 정해주어야한다. k값에 따라 결과 값의 차이가 많이 나기떄문에 적합한 K를 구해줘야한다.
- 적절한 K를 구하는 방법에는 실루엣 계수, 엘보우 기법 등이 있다.
*알고리즘
1. 군집 수 K를 설정.
2. 초기 K개의 군집의 중심을 랜덤으로 선택.
3. 관찰된 데이터를 설정된 k개의 중심 중 거리가 가까운 지점에 군집으로 할당.
4. 각 군집별로 할당된 데이터를 바탕으로 새로운 중심 계산.
5. 3~4 의 과정을 반복해 중심의 차이가 없을때 까지 반복.
Hierarchical Clustering
- 최단 연결법, 최장 연결법, 평균 연결법 등이 있다.
- 최단 연결법의 경우 관찰된 데이터중 가까운 데이터끼리 묶어감으로써 군집을 만들어가는 방법이다.
- Hieracrchical 한 구조를 가지며, Dendrogram으로 표현 된다. 직접 보고 군집을 나눌수 있는 장점이 있다.
*알고리즘
- 가장 가까운 데이터 끼리 묶음.
* 색별로 군집을 설정한 것을 볼수 있다. 사용자에 요구에 따라 변경 가능 할 수있다.
ex) 빨강,초록 n 파랑,하늘색을 같은 군집으로 묶을 수 있다.
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
from sklearn.metrics import pairwise_distances_argmin
def find_clusters(X, n_clusters, rseed=2):
# 1. Randomly choose clusters
rng = np.random.RandomState(rseed)
i = rng.permutation(X.shape[0])[:n_clusters]
centers = X[i]
while True:
labels=pairwise_distances_argmin(X,centers)
new_center=np.array([X[labels==i].mean(0) for i in range(n_clusters)])
if np.all(centers==new_center):
break
centers=new_center
return centers, labels
centers, labels = find_clusters(X, 4)
plt.scatter(X[:, 0], X[:, 1], c=labels,s=50, cmap='viridis');
'Study > Data Science' 카테고리의 다른 글
𝐹-test and T-test for OLS regression boston dataset (0) | 2018.10.17 |
---|---|
비정형 데이터 모델 TF Model , TF-IDF Model(CountVectorizer, TfidfVectorizer, Word Count) (0) | 2018.10.17 |
Confusion Matrix 혼동 행렬 (0) | 2018.08.03 |
RMSE, MAE (0) | 2018.08.03 |
Supervised learning, UnSupervised learning Models (0) | 2018.08.03 |