주요 콘텐츠

최적의 군집 개수 평가하기

evalclusters 함수를 사용하여 데이터 세트에서 최적의 군집 개수를 식별합니다.

또는 Cluster Data 라이브 편집기 작업을 사용하여 k-평균 군집화를 대화형 방식으로 수행할 수 있습니다.

fisheriris 데이터 세트를 불러옵니다.

load fisheriris
X = meas;
y = categorical(species);

X는 150개 붓꽃에 대한 2개의 꽃받침 측정값과 2개의 꽃잎 측정값을 포함하는 숫자형 행렬입니다. y는 이에 대응되는 붓꽃 종을 포함하는 문자형 벡터로 구성된 셀형 배열입니다.

Calinski-Harabasz 기준을 사용하여 1에서 10까지 최적의 군집 개수를 평가합니다. k-평균 군집화 알고리즘을 사용하여 데이터를 군집화합니다.

evaluation = evalclusters(X,"kmeans","CalinskiHarabasz",KList=1:10)
evaluation = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6 7 8 9 10]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068 449.6410 435.8182 413.3837 386.5571]
           OptimalK: 3


  Properties, Methods

OptimalK 값은 Calinski-Harabasz 기준에 따른 최적의 군집 개수가 3이라는 것을 나타냅니다.

각 군집 개수에 대한 군집 평가 결과를 시각화합니다.

plot(evaluation)
legend(["Criterion values","Criterion value at OptimalK"])

Figure contains an axes object. The axes object with xlabel Number of Clusters, ylabel CalinskiHarabasz Values contains 2 objects of type line. These objects represent Criterion values, Criterion value at OptimalK.

대부분의 군집화 알고리즘은 군집 개수에 대한 사전 정보를 필요로 합니다. 군집 개수를 알고 있지 않은 경우에는 지정된 측정법을 기반으로 데이터에 존재하는 군집 개수를 결정하기 위해 군집 평가 기법을 사용합니다.

데이터에서 세 개의 군집을 식별하는 것은 데이터에 세 가지 종이 포함되어 있다는 것을 의미합니다.

categories(y)
ans = 3×1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

데이터를 시각화하기 위해 데이터에 대한 음이 아닌 랭크 2 근사를 계산합니다.

reducedX = nnmf(X,2);

원래 특징이 두 개의 특징으로 줄어듭니다. 어떤 특징도 음수가 아니기 때문에 nnmf는 특징이 음수가 아니라는 것을 보장합니다.

산점도 플롯을 사용하여 세 개의 군집을 시각화합니다. 색을 사용하여 붓꽃 종을 나타냅니다.

gscatter(reducedX(:,1),reducedX(:,2),y)
xlabel("Column 1")
ylabel("Column 2")
grid on

Figure contains an axes object. The axes object with xlabel Column 1, ylabel Column 2 contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent setosa, versicolor, virginica.

참고 항목

| | |

도움말 항목