K-평균 알고리즘(K-means Clustering algorithm) 실습

2020. 12. 14. 22:33데이터과학/머신러닝

728x90
반응형

1. 데이터 설정하기

:가장 먼저 데이터 프레임(Data Frame)을 형성한다.

from sklearn.cluster import KMeans
import numpy as np
import pandas as pd
import seaborn as sb
import matplotlib.pyplot as plt
%matplotlib inline

df = pd.DataFrame(columns=['x', 'y'])

df.loc[0] = [2, 3]
df.loc[1] = [2, 11]
df.loc[2] = [2, 18]
df.loc[3] = [4, 5]
df.loc[4] = [4, 7]
df.loc[5] = [5, 3]
df.loc[6] = [5, 15]
df.loc[7] = [6, 6]
df.loc[8] = [6, 8]
df.loc[9] = [6, 9]
df.loc[10] = [7, 2]
df.loc[11] = [7, 4]
df.loc[12] = [7, 5]
df.loc[13] = [7, 17]
df.loc[14] = [7, 18]
df.loc[15] = [8, 5]
df.loc[16] = [8, 4]
df.loc[17] = [9, 10]
df.loc[18] = [9, 11]
df.loc[19] = [9, 15]
df.loc[20] = [9, 19]
df.loc[21] = [10, 5]
df.loc[22] = [10, 8]
df.loc[23] = [10, 18]
df.loc[24] = [12, 6]
df.loc[25] = [13, 5]
df.loc[26] = [14, 11]
df.loc[27] = [15, 6]
df.loc[28] = [15, 18]
df.loc[29] = [18, 12]

df.head(30)

 

 

2. 데이터 시각화하기

sb.lmplot('x', 'y', data=df, fit_reg=False, scatter_kws={"s": 100})
#도표의 제목, x축 이름, y축 이름을 설정하고 마커의 크기 또한 100으로 설정함
plt.title('K-means Example')
plt.xlabel('x')
plt.ylabel('y')

3. K-means를 활용한 클러스터링

#데이터 프레임을 넘파이 객체로 초기화
points = df.values

#데이터를 기반으로 k-means 알고리즘을 수행해 클러스터 4개를 생성한다.
kmeans = KMeans(n_clusters=4).fit(points)

#각 클러스터들의 중심 위치를 구한다.
kmeans.cluster_centers_

별다른 알고리즘 명시가 없으면 기본적으로 K-means가 적용되므로 실행할 때마다 값이 바뀐다.

각각의 데이터가 어떤 클러스터에 포함되는지 알아본다.

#각 데이터가 속한 클러스터를 확인한다.
kmeans.labels_

#시각화를 위해 각 데이터를 클러스터 별로 기록한다.
df['cluster'] = kmeans.labels_
df.head(30)

#이제 최종적으로 클러스터링이 완료된 결과를 출력한다.
sb.lmplot('x', 'y', data=df, fit_reg=False, scatter_kws={"s": 150}, hue='cluster')

plt.title('K-means Example')

실행결과는 다음과 같이 나타난다.