개발공부

sklearn라이브러리를 이용한 K-Means의 WCSS와 Elbow Method 본문

Python/Machine Learning

sklearn라이브러리를 이용한 K-Means의 WCSS와 Elbow Method

mscha 2022. 5. 10. 17:42

K-Means 알고리즘

데이터를 K개의 군집으로 묶는 알고리즘이다.

각 군집의 평균(mean)을 확용해 K개의 군집으로 묶는다는 의미다.

여기서 평균이란 각 클러스터의 중심과 데이터들의 평균 거리를 의미한다.

 

 

WCSS (Within Cluster Sum of Squares)

 

클러스터의 각 구성원과 해당 중심 사이의 거리 제곱의 합으로 정의된다.

 

Elbow Method 

KMeans에 관한 군집수를 알 수 있다.

 

 

예제

sklearn라이브러리는 KMeans를 할 수 있는 함수를 제공한다.

from sklearn.cluster import KMeans

데이터 X가 있다고 할 때 적절한 K 값을 찾기 위해 WCSS 값을 확인해야 한다.

따라서 for 문을 통해 k를 2부터 10까지 의 값을 넣어 학습해보고

그때의 wcss 값을 확인해 본다. 이때 wcss값은 sklearn 라이브러리의 kmeans.inertia_를 사용한다.

그리고 엘보우 메소드를 이용해 최적의 K값을 찾을 수 있다.

wcss = []
for k in range(2, 10 + 1) :
    kmeans = KMeans(n_clusters= k, random_state= 42)
    kmeans.fit(X)
    wcss.append(kmeans.inertia_)

wcss

위와 같은 wcss값들을 구했다 이를 엘보우 메소드로 나타내면 다음과 같다.

plt.plot(range(2, 10+1), wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of Clusters')
plt.ylabel('WCSS')
plt.show()

위와 같이 나오면 이를 보고 적절한 k의 값을 찾으면 된다.