: 평균값을 자동으로 찾아주는 군집알고리즘
- 클러스터 중심(센트로이드): k-평균 알고이즘이 만든 클러스터에 속한 샘플의 특성 평균값, 가장 가까운 클러스터 중심을 샘플의 또다른 특성으로 사용하거나 새로운 샘플에 대한 예측으로 활용
- 작동방식:
- 무작위로 k개의 클러스터 중심 정함
- 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정
- 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경
- 클러스터 중심에 변화가 없을때까지 2번으로 돌아가 반복
- 매개변수 n_clusters: 클러스터 개수 지정
from sklearn.cluster import KMeans
km = KMeans(n_cluster = 3, random_state = 42)
km.fit(fruits_2d)
labels_
: 군집결과 저장됨, 이 배열은 각 샘플이 어떤 레이블에 해당되는지 나타냄draw_fruits( )
: 각 클러스터가 어떤 이미지를 나타냈는지 그림으로 출력km.labels_==0
: km.labels_ 배열에서 값이 0인 위치는 True, 그외는 모두 False가 됨 => 불리언 인덱싱cluster_centers_
: 최종적으로 찾은 클러스터 중심이 저장된 곳trnasform( )
: 훈련 데이터샘플에서 클러스터 중심까지 거리로 변환해주는 메서드predict
: 가장 가까운 클러스터 중심을 예측 클래스로 출력n_iter_
: 알고리즘이 반복한 횟수가 저장됨
- 실전에서는 몇개의 클러스터가 있는지 알 수 없기 때문에 몇가지 방법을 사용해 최적의 k를 찾을 수 있는데 그중 대표적인 방법
- 클러스터 개수를 늘려가며 이너셔의 변화를 관찰해 최적의 클러스터 개수를 찾는 방법
- 클러스터 개수를 증가시키며 이너셔를 그리면 감소하는 속도가 꺾이는 지점이 있음 -> 해당 지점부터는 클러스터 수를 늘려도 밀집정도가 크게 개선되지 않음 = 최적의 클러스터 개수
- 클러스터 중심과 클러스터에 속한 샘플 사이 거리의 제곱합
- 클러스터에 속한 샘플이 얼마나 가깝게 모여있는지 나타내는 값
- 일반적으로 클러스터 개수가 늘어나면 클러스터 개개의 크기는 줄어들어 이너셔도 줄어듦
inertia_
: 이너셔 값