은 다음 모델 (예를 들어, clustering
은) 실루엣 계수를 사용하여 평가 될 수있다. sklearn documentation에서
,
높은 실루엣 계수 점수는 잘 정의 된 클러스터와 모델에 관한 것이다. 실루엣 계수는 각각의 샘플에 대해 정의 된 두 점수 구성되어 `
A : 시료와 동일한 클래스의 다른 지점 사이의 평균 거리.
B : 샘플과 다음 가까운 클러스터의 다른 모든 지점 사이의 평균 거리.
실루엣 계수는 단일 샘플에 대해 다음과 같이 특정된다 :
지금
가 KMeans
에 n_clusters위한 1..N 통해 최적 KMeans
위한 k
값 루프를 찾는 각 샘플에 대한 실루엣 계수를 계산합니다.
높은 실루엣 계수는 개체가 자체 클러스터와 잘 일치하고 인접 클러스터와 잘 일치하지 않음을 나타냅니다.
from sklearn.metrics import silhouette_score
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
X = load_iris().data
y = load_iris().target
for n_cluster in range(2, 11):
kmeans = KMeans(n_clusters=n_cluster).fit(X)
label = kmeans.labels_
sil_coeff = silhouette_score(X, label, metric='euclidean')
print("For n_clusters={}, The Silhouette Coefficient is {}".format(n_cluster, sil_coeff))
출력 - n_clusters = 2의
가 실루엣 계수 n_clusters = 3 0.680813620271
이고, 실루엣 계수 n_clusters = 4 0.552591944521
이다 실루엣 계수이고 0.496992849949
n_clusters = 5 인 경우 실루엣 계수는 0.488517550854
n_clusters = 6 인 경우 Silhouette Coefficie NT는 n_clusters = 7의 0.370380309351
이다 실루엣 계수 n_clusters 들어 0.356303270516
가 = 8, 실루엣 계수 n_clusters = 9의 0.365164535737
, 실루엣 계수 n_clusters = 10 0.346583642095
, 실루엣 계수이다이다 0.328266088778
우리가 볼 수 있듯이, n_clusters의 = 2 가장 높은 실루엣 계수가 있습니다. 이것은 2가 클러스터의 최적 수임을 의미합니다. 맞습니까?
하지만 여기 잡기가 있습니다.
아이리스 데이터 세트에는 3 가지 종류의 꽃이 있으며, 이는 2를 클러스터의 최적 수와 모순됩니다.
- 아이리스 데이터 세트 3 종을 보유하고 - 그래서 n_clusters = 2 가장 높은 실루엣 계수에도 불구하고, 우리는 인해 클러스터의 n_clusters = 3로 최적의 수를 고려한다. (가장 중요 함)
- n_clusters = 2의 실루엣 계수는 두 번째로 높습니다.
따라서 n_clusters = 3을 선택하는 것이 가장 좋습니다. 홍채 데이터 세트를위한 클러스터.
최적의 번호 선택. 클러스터의 유형은 데이터 세트의 유형과 해결하려는 문제에 따라 다릅니다. 그러나 대부분의 경우 Silhouette Coefficient가 높을수록 최적의 클러스터 수를 얻을 수 있습니다.
희망 하시겠습니까?
그러나 귀하의 예에서는 n = 2 실루엣 계수가 높지 않습니까? – mattdeak
그것을 지적 해 주신 @mattdeak에게 감사드립니다.이 경우, n = 3을 선택하는 것은 홍채 데이터 세트가 3 가지 종을 갖지만, 동시에 실루엣 coeff를 갖는 것이 가장 좋습니다. 가장 높지 않습니다. 이것은 높은 sillhouette coeff라는 사실을 모순 된 것처럼 보입니다. 최적의 클러스터 수를 얻습니다. [gap static method] (http://web.stanford.edu/~hastie/Papers/gap.pdf) –
최적의 n_cluster == 3으로 설정하십시오. 감사 – Yogesh