본문 바로가기
프로그래밍/Scikit-Learn

[Scikit-Learn] 19. 클러스터링 평가 지표 실루엣 지수(Silhouette Index), Calinski-Harabasz Index, Davies-Bouldin Index (feat. silhouette_score, calinski_harabasz_score, davies_bouldin_score)

by 부자 꽁냥이 2023. 1. 22.

Scikit-Learn에서는 클러스터링 평가를 위한 여러 가지 지표를 제공하고 있다. 여기서는 실루엣 지수(Silhouette Index), Calinski-Harabasz Index, Davies-Bouldin Index을 다루어 보겠다. 실루엣 지수(Silhouette Index)는 silhouette_score 함수, Calinski-Harabasz Index는 calinski_harabasz_score 함수, Davies-Bouldin Index는 davies_bouldin_score 함수를 이용하여 계산할 수 있다. 이제 각 함수의 사용법을 알아보자. 

 

각 지수에 대한 개념은 아래 포스팅을 참고하기 바란다.

 

실루엣 지수(Silhouette Index) - https://zephyrus1111.tistory.com/193

Calinski-Harabasz Index - https://zephyrus1111.tistory.com/417#c1

Davies-Bouldin Index - https://zephyrus1111.tistory.com/417#c2


   클러스터링 평가 지표

먼저 데이터를 생성하고 K-Means 알고리즘을 이용하여 클러스터링을 수행한다.

 

import numpy as np
 
from sklearn.cluster import KMeans
np.random.seed(100)
size = 50
 
## 데이터 생성
x_11 = np.linspace(0.3,0.8,20)
x_12 = np.linspace(1.4,1.9,15)
x_13 = np.linspace(2.5,3.1,15)
x1 = np.concatenate((x_11,x_12,x_13),axis=None)
error = np.random.normal(1,0.5,size)
x2 = 1.5*x1+2+error

## 클러스터링
X = np.c_[x1, x2]
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
cluster = kmeans.predict(X)

1) 실루엣 지수(Silhouette Index) : silhouette_score 

silhouette_score 함수는 데이터와 클러스터 라벨을 넘겨주면 실루엣 지수를 계산해 준다.

 

from sklearn.metrics import silhouette_score

print(silhouette_score(X, cluster))

 

실루엣 지수(Silhouette Index)


2) Calinski-Harabasz Index : calinski_harabasz_score

calinski_harabasz_score 함수에 데이터와 클러스터 라벨을 넘겨주면 Calinski-Harabasz Index를 계산해 준다.

 

from sklearn.metrics import calinski_harabasz_score

print(calinski_harabasz_score(X, cluster))

 

Calinski-Harabasz Index


3) Davies-Bouldin Index : davies_bouldin_score 

davies_bouldin_score 함수에 데이터와 클러스터 라벨을 넘겨주면 Davies-Bouldin Index를 계산해 준다.

 

from sklearn.metrics import davies_bouldin_score

print(davies_bouldin_score(X, cluster))

 

Davies-Bouldin Index


댓글


맨 위로