반응형
중심 기반 군집에 해당하는 KMeans 클러스터링 알고리즘은 n개의 중심점을 찍은 후에, 이 중심점에서 각 점간의 거리의 합이 가장 최소화가 되는 중심점 n의 위치를 찾고, 이 중심점에서 가까운 점들을 중심점을 기준으로 묶는 군집화 알고리즘 입니다. 중심 기반 군집에는 K-Means, K-Median, K-medoid 등이 있습니다.
K-Means 군집화 알고리즘은
중심 기반 군집 종류 입니다.
1. K-Means의 장점
- 계층적으로 군집을 형성시키지 않고 개체들을 몇 개의 군집으로 구분
- 초기에 부적절한 병합(분리)이 일어났을 때 회복 가능
- 군집의 수를 사전에 정의
- 개체의 수가 많을 때 유용
- 계층적 군집법에 비하여 계산량이 적음
- 대용량 데이터를 빠르게 처리할 수 있음
2. K-Means의 절차
1.군집의 수 k를 정의
2.초기 k개 군집의 중심 (centroid) 선택
3.각 관측값들을 가장 가까운 중심의 군집에 할당
4.새로운 군집의 중심 계산
5.3, 4의 과정을 중심에 변화가 없을 때까지 반복
|
3. iris 데이터를 이용한 K-Means 실습
#K-Means() 군집
from sklearn.cluster import KMeans #KMeans 모듈 가져옴
import matplotlib.pyplot as plt
import seaborn as sns
# create model and prediction
model = KMeans(n_clusters=3,algorithm='auto') #군집수 지정(가장 중요함)
model.fit(data) #모델설정
predict = pd.DataFrame(model.predict(data)) #군집을 예측
predict.columns=['cluster']
|
data_result = pd.concat([data,predict],axis=1) #기존 데이터와 클러스팅한 군집을 합침
|
- 초기의 군집의 수를 정하는 것이 매우 중요 합니다. 군집수를 구하기 위한 차트 입니다.
#초기 군집수가 매우 중요하기 때문에 군집수를 결정하기 위한 차트호 확인할 수 있음
ks = range(1,10) inertias = []
for k in ks:
model = KMeans(n_clusters=k)
model.fit(data)
inertias.append(model.inertia_)
# Plot ks vs inertias
plt.plot(ks, inertias, '-o')
plt.xlabel('number of clusters, k')
plt.ylabel('inertia')
plt.xticks(ks)
plt.show()
|
https://github.com/sense64/data_viz/blob/main/h_clustering_prg1.ipynb
'데이터분석 > 데이터 분류 및 군집화' 카테고리의 다른 글
의사결정나무를 이용한 분류모형 (0) | 2023.10.25 |
---|---|
분류모형의 성능평가 (0) | 2023.10.22 |
데이터 계층적 군집화(Hierarchical Clustering) (0) | 2023.10.04 |
K-Nearest Neighbors 알고리즘 이해과 붓꽃(IRIS) 데이터 활용 (0) | 2023.09.21 |
데이터 분류(Classification)과 군집화(Clustering)의 차이점 (0) | 2023.09.21 |