Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- del
- 덴드로그램
- append()
- 최댓값
- hierarchical_clustering
- Machine Learning
- dendrogram
- 분류 결과표
- sklearn
- pandas
- data
- count()
- Dictionary
- function
- wcss
- elbow method
- DataFrame
- IN
- matplotlib
- list
- len()
- analizer
- string
- insert()
- 최솟값
- nan
- 반복문
- numpy
- DataAccess
- Python
Archives
- Today
- Total
개발공부
sklearn라이브러리를 이용한 K-Means의 WCSS와 Elbow Method 본문
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의 값을 찾으면 된다.
'Python > Machine Learning' 카테고리의 다른 글
| Grid Search란 ? sklearn 라이브러리의 GridSearchCV 사용법 (0) | 2022.05.11 |
|---|---|
| Hierachical Clustering과 Dendrogram (0) | 2022.05.10 |
| 스케일러나 인코더의 fit(), transform(), fit_transform() 함수 사용법 (0) | 2022.05.10 |
| [Machine Learning] 신규 데이터 예측하는 순서 (0) | 2022.05.09 |
| sklearn 라이브러리의 분류 결과표 Confusion Matrix (분류 문제의 인공지능 성능 평가 방법) (0) | 2022.05.09 |