파이썬 빅 데이터 K-평균(K-means)

  • 대표적인 클러스터링 알고리즘
  • 클러스터링(Clustering)이란 여러 개의 데이터가 있을 때 데이터를 묶는 것
  • 예를 들어 학원에서 고급반, 중급반, 초급반으로 나누면 데이터 활용 방안이 많아진다
  • 비지도 학습 알고리즘
  • 여러개의 데이터가 있을 때 거리가 가까운 데이터를 선택하는 것(고급반, 중급반, 초급반 중 하나)
  • 그리고 데이터를 중심값으로 옮겨준다. 그리고 또 비교하고.. 완벽한 중심값을 찾을 때 까지 반복한다.
  • K-means 플러시플러시는 이미 선택된 중심점들로부터 가장 멀리 있는 노드가 중심이 됨.
  • 파이썬 빅 데이터 분석에서 많이 사용되는 라이브러리는 팬더스(Pandas), 넘파이(Numpy), 맷플랏라이브러리(Matplotlib)
  • Numpy : 연산처리를 용이하게 함
  • Pandas : 데이터 포인트를 만들기 위해 사용
  • Matplotlib : 데이터 시각화를 위해 사용
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) # 표로 나타내기

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 
kmeans = KMeans(n_clusters=4).fit(points)
kmeans.cluster_centers_

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')