클러스터링(군집화)의 한 방법. 활용분야가 매우 넓다.
[군집화의 순서]
1. 클러스터링을 수행할 데이터의 주제를 결정한다. (구분기준)
2. 얼마나 많은 클러스터를 만들것인가?
3. 데이터를 준비한다.
4. 어떠한 알고리즘을 이용할 것인가? (무작위 중심, k-means, k-means++ 등등)
※k-means의 과정
1. 무작위로 만드려는 클러스터의 개수만큼 중심을 정하고, 중심(Centroid)에 가까운 데이터를 클러스터에 포함시킨다.
2. 중심을 클러스터의 중앙으로 이동시킨다.
3. 다시 중심에 가까운 데이터를 클러스터에 포함시킨다.
위 과정을 중심의 위치가 변하지 않을 때까지 반복한다.
※※k-means++의 경우에는 처음에 적절한 중심의 위치를 찾아주는 알고리즘이다.(클러스터를 3개 만든다고 가정)
1. 무작위로 특정한 데이터를 설정한다.
2. 그 데이터와 가장 먼 데이터를 중심으로 설정한다.
3. 두 데이터와 가장 멀리있는 데이터를 중심으로 설정한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | from sklearn.cluster import KMeans import numpy as np import pandas as pd import seaborn as sb #데이터 시각화를 위한 seaborn import matplotlib.pyplot as plt %matplotlib inline #notebook을 실행한 브라우저에서 그림을 볼 수 있게 한다.출력에 관함. df = pd.DataFrame(columns=['x','y']) df.loc[0] = [2,3] df.loc[1] = [12,3] df.loc[2] = [24,33] df.loc[3] = [52,13] df.loc[4] = [22,30] df.loc[5] = [62,83] df.loc[6] = [82,3] df.loc[7] = [72,38] df.loc[8] = [92,30] df.loc[9] = [82,93] df.loc[10] = [28,33] df.loc[11] = [23,23] df.loc[12] = [62,38] df.loc[13] = [22,23] df.loc[14] = [52,13] df.loc[15] = [24,37] df.loc[16] = [52,13] df.loc[17] = [26,93] df.loc[18] = [62,83] df.loc[19] = [12,35] df.loc[20] = [22,39] sb.lmplot('x','y',data=df, fit_reg=False, scatter_kws={"s": 100}) #좌표평면에 출력 plt.title('k-means example') plt.xlabel('x축') plt.ylabel('y축') points = df.values #dataFrame의 값들을 numpy객체로서 초기화해준다. kmeans = KMeans(n_clusters=4).fit(points) #총 클러스터 4개를 생성한다. kmeans.cluster_centers_ #결과로 4가지 중심값이 나온다. #별다른 설정이 없으면 하나의 무작위값으로, 기본적으로 k-means++가 적용된다. kmeans.labels_ #k-means의 결과값이 나온다. df['cluster'] = kmeans.labels_ #하나의 클러스터라는 속성을 만들어주고 그 값으로는 클러스터의 id값이 들어가도록 한다. df.head(20)#표로 보여준다. sb.lmplot('x','y',data=df, fit_reg=False, scatter_kws={"s": 150}, hue="cluster") #좌표평면에 plt.title('k-means example') | cs |


