다음 그림은 output1 폴더 위치에 분류된 개 이미지입니다.
▲ 그림 11-9 분류된 개 이미지
완벽하지는 않지만, 개와 고양이가 유사한 이미지끼리 분류되었습니다.
참고로 예제 이미지는 개와 고양이로만 구성되어 있기 때문에 클래스가 두 개라는 것을 알 수 있지만, 이미지가 수백 개에서 수천만 개로 구성된 데이터셋이라면 클래스를 결정하기 어려울 수 있습니다. 이때 사용할 수 있는 것이 실루엣(silhouette)과 엘보(elbow) 방법입니다. 엘보는 앞서 살펴보았기 때문에 여기에서는 실루엣 방법을 사용하겠지만, 정확한 클래스를 알아내려면 두 가지 방법을 모두 사용해 보아야 합니다.
코드 11-6 KMeans에서 클래스 개수 알아보기
sil = []
kl = []
kmax = 10
for k in range(2, kmax+1):
kmeans2 = KMeans(n_clusters=k).fit(pred_images)
labels = kmeans2.labels_
sil.append(silhouette_score(pred_images, labels, metric='euclidean')) ------ 실루엣 방법을 이용한 클래스 개수 확인
kl.append(k)
개와 고양이 데이터셋 외 다른 이미지들로 구성된 데이터셋을 적용하여 확인해 보는 것도 학습하기에 좋은 방법이므로 직접 사용해 보길 권장합니다.