Yellowbrick 및 Scikit-Learn PlatoBlockchain 데이터 인텔리전스를 사용한 K-Means 팔꿈치 방법 및 실루엣 분석. 수직 검색. 일체 포함.

Yellowbrick 및 Scikit-Learn을 사용한 K-Means 팔꿈치 방법 및 실루엣 분석

개요

K-Means는 가장 널리 사용되는 클러스터링 알고리즘 중 하나입니다. 클러스터에 대한 중심점이 있으면 해당 중심점까지의 거리에 따라 다른 포인트를 그룹화합니다.

K-Means의 단점은 클러스터의 수를 선택해야 한다는 것입니다. K, 점을 그룹화하는 알고리즘을 실행하기 전에

K-Means 클러스터링에 대한 심층 가이드를 읽고 싶다면 다음을 참조하십시오. “Scikit-Learn으로 K-Means 클러스터링”.

팔꿈치 방법 및 실루엣 분석

K의 수를 선택하는 데 가장 일반적으로 사용되는 기술은 다음과 같습니다. 팔꿈치 방법 그리고 실루엣 분석.

K의 선택을 용이하게 하기 위해, 노란 벽돌 라이브러리는 일반적으로 4줄의 코드로 작성하는 for 루프와 플롯으로 코드를 마무리합니다.

Jupyter 노트북에서 직접 Yellowbrick을 설치하려면 다음을 실행하십시오.

! pip install yellowbrick

이미 Scikit-learn의 일부인 친숙한 데이터 세트에 대해 어떻게 작동하는지 봅시다. 조리개 데이터 세트.

첫 번째 단계는 데이터세트를 가져오는 것입니다. KMeansyellowbrick 라이브러리 및 데이터 로드:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

iris = load_iris()

여기서 주목하세요. KElbowVisualizerSilhouetteVisualizeryellowbrick.cluster, 이것들은 Elbow 및 Silhouette 결과를 시각화하는 데 사용할 모듈입니다!

데이터세트를 로드한 후 data 묶음의 키(사전의 확장인 데이터 유형)는 클러스터링하려는 포인트의 값입니다. 숫자가 무엇을 나타내는지 알고 싶다면 iris['feature_names'].

Iris 데이터 세트에는 'versicolor', 'virginica' 및 'setosa'의 세 가지 유형의 홍채가 포함되어 있는 것으로 알려져 있습니다. 의 클래스를 검사할 수도 있습니다. iris['target_names'] 확인합니다.

따라서 우리는 클러스터링할 4개의 기능을 가지고 있으며 우리가 이미 알고 있는 것에 따라 3개의 다른 클러스터로 분리해야 합니다. 팔꿈치 방법과 실루엣 분석을 사용한 결과가 이를 뒷받침하는지 봅시다.

먼저 특성 값을 선택합니다.

print(iris['feature_names']) 
print(iris['target_names']) 

X = iris['data']

그런 다음 생성할 수 있습니다. KMeans 모델, KElbowVisualizer() 메트릭이 계산될 ks 수와 함께 해당 모델을 수신할 인스턴스(이 경우 2 ~ 11 크.

그 후, 우리는 다음을 사용하여 데이터에 시각화 도우미를 맞춥니다. fit() 다음으로 플롯을 표시합니다. show(). 메트릭이 지정되지 않은 경우 시각화 도우미는 왜곡 각 점에서 할당된 중심까지의 거리 제곱의 합을 계산하는 미터법:

model = KMeans(random_state=42)

elb_visualizer = KElbowVisualizer(model, k=(2,11))
elb_visualizer.fit(X)    
elb_visualizer.show()  

이제 우리는 이미 KMeans 클러스터링에 대한 왜곡 점수 엘보우 이 경우 가장 좋은 k 수인 수직선 표시가 있는 플롯, 4.

실제 클러스터 수를 모른다면 왜곡 메트릭이 있는 팔꿈치 방법이 최선의 선택이 아닌 것 같습니다. Silhouette은 또한 4개의 클러스터가 있음을 표시합니까? 이에 대한 답을 얻으려면 4개의 클러스터와 다른 시각화 개체가 있는 모델로 마지막 코드를 반복하기만 하면 됩니다.

model_4clust = KMeans(n_clusters = 4, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_4clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

k에 대한 실루엣 점수는 팔꿈치 방법을 사용하는 클러스터를 의미합니다.

코드는 다음을 표시합니다. 150개 센터에서 4개 샘플에 대한 KMeans 클러스터링의 실루엣 플롯. 이 클러스터를 분석하려면 실루엣 계수(또는 점수)의 값을 살펴봐야 합니다. 가장 좋은 값은 1에 가깝습니다. 평균 값은 다음과 같습니다. 0.5, 세로선으로 표시되며 그다지 좋지 않습니다.

또한 클러스터 간의 분포를 살펴볼 필요가 있습니다. 좋은 플롯은 비슷한 크기의 클러스터된 영역 또는 잘 분산된 점을 가지고 있습니다. 이 그래프에는 3개의 더 작은 클러스터(숫자 3, 2, 1)와 하나의 더 큰 클러스터(숫자 0)가 있습니다. 이는 우리가 기대한 결과가 아닙니다.

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

3개의 클러스터에 대해 동일한 플롯을 반복하여 무슨 일이 일어나는지 살펴보겠습니다.

model_3clust = KMeans(n_clusters = 3, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_3clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

kmean 군집의 실루엣

클러스터 수를 변경하여 실루엣 점수를 얻었습니다. 0.05 더 높고 클러스터가 더 균형을 이룹니다. 실제 클러스터 수를 알지 못했다면 두 기술을 모두 실험하고 결합하여 다음을 선택했을 것입니다. 3 대신 2 Ks의 수로.

서로 다른 메트릭을 결합 및 비교하고 데이터를 시각화하고 다양한 클러스터 값으로 실험하는 것이 결과를 올바른 방향으로 이끄는 데 얼마나 중요한지 보여주는 예입니다. 또한 분석을 용이하게 하는 라이브러리를 갖는 것이 그 과정에 얼마나 도움이 될 수 있는지!

타임 스탬프 :

더보기 스택카부스