-
K 평균(K Means) 실습NAN/머신 러닝 2021. 7. 8. 23:37728x90
K Means / ++ 실습
파이썬 빅 데이터 분석에 가장 많이 활용되는 라이브러리는 Pandas, Numpy, Matplotlib이다.
Numpy : 연산 처리를 용이하게 하기 위해 사용
Pandas : 데이터 포인트를 만들기 위해 사용
Matplotlib : 데이터 시각화에 사용 / seaborn도 함께 사용된다.
실습
from sklearn.cluster import KMeans #sklearn에 포함되어 있는 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]
#정의한 데이터를 확인하기 위해 위에서 30개 확인 df.head(30) x y 0 2 3 1 2 11 2 2 18 3 4 5 4 4 7 5 5 3 6 5 15 7 6 6 8 6 8 9 6 9 10 7 2 11 7 4 12 7 5 13 7 17 14 7 18 15 8 5 16 8 4 17 9 10 18 9 11 19 9 15 20 9 19 21 10 5 22 10 8 23 10 18 24 12 6 25 13 5 26 14 11 27 15 6 28 15 18 29 18 12
# 불러온 데이터 시각화 sb.lmplot('x','y',data=df, fit_reg=False, scatter_kws={"s":100}) plt.title('K-means Example') plt.xlabel('x') plt.ylabel('y')
데이터 시각화 # 시각화까지 이상 없음을 확인 했다면 # Numpy를 사용하여 데이터 연산 points = df.values # DataFrame의 값들을 numpy로 바꿔준다. kmeans = KMeans(n_clusters=4).fit(points) # 정의한 데이터를 기반으로 kmeans 알고리즘 수행 총 클러스터 4개 설정 kmeans.cluster_centers_ # 각 클러스터들이 중심 위치를 구할 수 있도록 설정 # 성공적으로 클러스터링 구현 array([[ 5.53846154, 5.53846154], [ 7. , 17.14285714], [11.14285714, 7.28571429], [15.66666667, 13.66666667]]) # 기본적으로 별다른 명시가 없다면 자동으로 특정한 위치에서 클러스터링을 수행 할 수 있도록 # 무작위 값을 결정해주는 Kmeans ++ 알고리즘이 작동되기 때문에 실행만 하더라도 클러스터링이 수행된다. # 무작위 값이 적용되기 때문에 실행 할 때마다 그 값이 변동 된다.
# 각 데이터들이 속한 클러스터 확인하는 방법 kmeans.labels_ array([0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 1, 1, 2, 2, 1, 2, 2, 3, 2, 3, 3], dtype=int32 0~3까지 클러스터에 데이터가 속한것을 확인 할 수 있다.
# 시각화를 위해 'cluster'라는 속성을 만들어준 후 그 값으로는 # 각각의 데이터의 클러스터 id값이 들어가게 만들어준다. df['cluster'] = kmeans.labels_ df.head(10) x y cluster 0 2 3 0 1 2 11 0 2 2 18 1 3 4 5 0 4 4 7 0 5 5 3 0 6 5 15 1 7 6 6 0 8 6 8 0 9 6 9 0
# 클러스터링 완료 데이터 시각화 # hue : 특정 속성을 기준으로 색상을 나눔 sb.lmplot('x','y',data=df, fit_reg=False, scatter_kws={"s":150}, hue = "cluster") plt.title('K-means Example')
완성된 데이터 시각화
https://www.youtube.com/watch?v=sXgQsJLDP8g&list=PLRx0vPvlEmdAbnmLH9yh03cw9UQU_o7PO&index=12
youtube 동빈나님 'NAN > 머신 러닝' 카테고리의 다른 글
KNN 간단 예제_2 (0) 2021.07.11 KNN 간단 예제_1 (0) 2021.07.09 데이터 실습 (0) 2021.07.08 세션 Session (0) 2021.07.08 Function (0) 2021.07.08