cluster
연결로부터 병합 군집 생성
구문
설명
는 계층적 병합 군집 트리 T
= cluster(Z
,'Cutoff'
,C
)Z
로부터 군집을 정의합니다. 입력값 Z
는 입력 데이터 행렬 X
에 대한 linkage
함수의 출력값입니다. cluster
는 Z
를 군집으로 절단하며, 이때 C
를 트리 노드의 불일치 계수(또는 inconsistent
값)에 대한 분계점으로 사용합니다. 출력값 T
에는 각 관측값(X
의 행)의 군집 할당이 포함됩니다.
예제
깊이를 지정하여 군집 정의하기
각 노드 아래 깊이 4까지의 불일치 값을 계산하여 임의로 생성된 데이터에 대해 병합 군집화를 수행합니다.
표본 데이터를 임의로 생성합니다.
rng('default'); % For reproducibility X = [(randn(20,2)*0.75)+1; (randn(20,2)*0.25)-1];
데이터에 대한 산점도 플롯을 생성합니다.
scatter(X(:,1),X(:,2));
title('Randomly Generated Data');
ward
연결 방법을 사용하여 계층적 군집 트리를 생성합니다.
Z = linkage(X,'ward');
데이터에 대한 덴드로그램 플롯을 생성합니다.
dendrogram(Z)
산점도 플롯과 덴드로그램 플롯에서는 데이터에 2개의 군집이 있는 것으로 나타납니다.
불일치 계수에 분계점 3을 사용하여 각 노드 아래 깊이 4까지의 데이터를 군집화합니다. 결과 군집을 플로팅합니다.
T = cluster(Z,'cutoff',3,'Depth',4); gscatter(X(:,1),X(:,2),T)
cluster
는 데이터에서 2개의 군집을 식별합니다.
거리 기준을 사용하여 데이터 군집화하기
'distance'
를 군집을 정의하는 기준으로 사용하여 fisheriris
데이터 세트에 대해 병합 군집화를 수행합니다. 데이터의 군집 할당을 시각화합니다.
fisheriris
데이터 세트를 불러옵니다.
load fisheriris
종을 그룹화 변수로 사용하여 데이터를 2차원 산점도 플롯으로 시각화합니다. 3개의 서로 다른 종에 대해 마커 색과 마커 기호를 지정합니다.
gscatter(meas(:,1),meas(:,2),species,'rgb','do*') title("Actual Clusters of Fisher's Iris Data")
'average'
방법과 'chebychev'
측정법을 사용하여 계층적 군집 트리를 생성합니다.
Z = linkage(meas,'average','chebychev');
'distance'
기준에 대해 분계점 1.5를 사용하여 데이터를 군집화합니다.
T = cluster(Z,'cutoff',1.5,'Criterion','distance')
T = 150×1
2
2
2
2
2
2
2
2
2
2
⋮
T
에 군집 할당에 대응하는 숫자가 포함됩니다. cluster
가 식별하는 클래스의 개수를 구합니다.
length(unique(T))
ans = 3
cluster
는 cutoff
및 Criterion
에 지정된 값에 대해 3개의 클래스를 식별합니다.
T
를 그룹화 변수로 사용하여 군집화 결과를 2차원 산점도 플롯으로 시각화합니다. 3개의 서로 다른 클래스에 대해 마커 색과 마커 기호를 지정합니다.
gscatter(meas(:,1),meas(:,2),T,'rgb','do*') title("Cluster Assignments of Fisher's Iris Data")
군집화는 setosa 클래스(클래스 2)를 고유한 군집에 속하는 것으로 올바르게 식별하지만 versicolor 클래스와 virginica 클래스(각각 클래스 1 및 3)는 잘 구별하지 못합니다. 참고로, 산점도 플롯은 T
에 포함된 숫자를 사용하여 클래스 레이블을 지정합니다.
클래스에 대한 군집 할당 비교하기
fisheriris
데이터 세트에서 최대 세 개의 군집을 찾고 꽃의 군집 할당을 알려진 분류와 비교합니다.
표본 데이터를 불러옵니다.
load fisheriris
'average'
방법과 'chebychev'
측정법을 사용하여 계층적 군집 트리를 생성합니다.
Z = linkage(meas,'average','chebychev');
데이터에서 최대 세 개의 군집을 찾습니다.
T = cluster(Z,'maxclust',3);
Z
에 대한 덴드로그램 플롯을 생성합니다. 세 개의 군집을 표시하려면 마지막 세 번째 연결과 마지막 두 번째 연결 간의 중간 절단을 'ColorThreshold'
로 사용하십시오.
cutoff = median([Z(end-2,3) Z(end-1,3)]);
dendrogram(Z,'ColorThreshold',cutoff)
Z
의 마지막 두 행을 표시하여 세 개의 군집이 어떻게 하나로 결합되었는지를 확인합니다. linkage
는 연결 값으로 1.7583
을 사용하여 293번째(파란색) 군집을 297번째(빨간색) 군집과 결합하여 298번째 군집을 구성합니다. 그런 다음 linkage
는 296번째(녹색) 군집과 298번째 군집을 결합합니다.
lastTwo = Z(end-1:end,:)
lastTwo = 2×3
293.0000 297.0000 1.7583
296.0000 298.0000 3.4445
군집 할당이 세 가지 종에 어떻게 대응되는지를 확인합니다. 예를 들면, 군집 중 하나에 두 번째 종의 꽃은 50
송이, 세 번째 종의 꽃은 40
송이가 포함되어 있습니다.
crosstab(T,species)
ans = 3×3
0 0 10
0 50 40
50 0 0
데이터를 군집화하고 결과를 플로팅하기
20,000개의 관측값을 갖는 표본 데이터를 임의로 생성합니다.
rng('default') % For reproducibility X = rand(20000,3);
ward
연결 방법을 사용하여 계층적 군집 트리를 생성합니다. 이 경우, clusterdata
함수의 'SaveMemory'
옵션은 기본적으로 'on'
으로 설정됩니다. 일반적으로, X
의 차원과 사용 가능한 메모리를 기준으로 'SaveMemory'
에 가장 적합한 값을 지정합니다.
Z = linkage(X,'ward');
데이터를 최대 네 개의 그룹으로 군집화하고 결과를 플로팅합니다.
c = cluster(Z,'Maxclust',4);
scatter3(X(:,1),X(:,2),X(:,3),10,c)
cluster
는 데이터에서 네 개의 그룹을 식별합니다.
입력 인수
C
— 군집을 정의하기 위한 분계점
양의 스칼라 | 양의 스칼라로 구성된 벡터
군집을 정의하기 위한 분계점으로, 양의 스칼라 또는 양의 스칼라로 구성된 벡터로 지정됩니다. cluster
는 C
를 계층적 군집 트리에서 군집을 정의하는 criterion
에 따라 노드의 높이 또는 불일치 계수에 대한 분계점으로 사용합니다.
군집을 정의하는 기준이
'distance'
인 경우, 노드의 높이가C
보다 작으면cluster
는 그 노드의 리프와 그 아래 노드의 모든 리프를 한 군집으로 그룹화합니다.군집을 정의하는 기준이
'inconsistent'
인 경우,cluster
가 어느 한 노드와 그 노드의 모든 하위노드를 한 군집으로 그룹화하려면 그 노드와 모든 하위노드의inconsistent
값이C
보다 작아야 합니다.cluster
는 군집 트리Z
의 루트부터 시작해서inconsistent
값이 분계점C
보다 작고 하위노드(후손)의 불일치 값이C
보다 작은 노드를 만날 때까지 트리를 따라 내려갑니다. 그런 다음cluster
는 그 노드의 리프와 그 아래 노드의 모든 리프를 한 군집(또는 노드 자체가 리프인 경우 한원소)으로 그룹화합니다.cluster
는 모든 리프 노드가 군집에 포함될 때까지 트리의 모든 가지를 따라갑니다.
예: cluster(Z,'Cutoff',0.5)
데이터형: single
| double
D
— 불일치 값을 계산할 깊이
2 (디폴트 값) | 숫자형 스칼라
불일치 값을 계산할 깊이로, 숫자형 스칼라로 지정됩니다. cluster
는 각 노드 아래 깊이 D
까지의 불일치 값을 계산합니다.
예: cluster(Z,'Cutoff',0.5,'Depth',3)
데이터형: single
| double
criterion
— 군집을 정의하는 기준
'inconsistent'
(디폴트 값) | 'distance'
군집을 정의하는 기준으로, 'inconsistent'
또는 'distance'
로 지정됩니다.
군집을 정의하는 기준이 'distance'
인 경우, cluster
는 노드의 높이가 C
보다 작으면 그 노드의 리프와 그 아래 노드의 모든 리프를 한 군집(또는 노드 자체가 리프인 경우 한원소)으로 그룹화합니다. 트리에서 노드의 높이는 해당 노드에서 병합되는 두 하위노드 간의 거리를 나타냅니다. 'distance'
를 지정하면 Z
의 dendrogram
플롯의 수평 슬라이스에 대응하는 군집이 생성됩니다.
군집을 정의하는 기준이 'inconsistent'
인 경우, cluster
는 어느 한 노드와 그 하위노드의 불일치 계수(또는 inconsistent
값)가 C
보다 작으면 그 노드와 모든 하위노드를 한 군집으로 그룹화합니다. 'inconsistent'
를 지정하는 것은 cluster(Z,'Cutoff',C)
와 동일합니다.
예: cluster(Z,'Cutoff',0.5,'Criterion','distance')
데이터형: char
| string
N
— 최대 군집 개수
양의 정수 | 양의 정수로 구성된 벡터
생성할 군집의 최대 개수로, 양의 정수 또는 양의 정수로 구성된 벡터로 지정됩니다. cluster
는 'distance'
를 군집을 정의하는 기준으로 사용하여 최대 N
개의 군집을 구성합니다. 트리에서 각 노드의 높이는 해당 노드에서 병합된 두 하위노드 간의 거리를 나타냅니다. cluster
는 트리를 가로로 절단했을 때 N
개 이하의 군집이 남는 최소 높이를 구합니다. 자세한 내용은 임의 군집 지정하기를 참조하십시오.
예: cluster(Z,'MaxClust',5)
데이터형: single
| double
출력 인수
T
— 군집 할당
숫자형 벡터 | 숫자형 행렬
군집 할당으로, 숫자형 벡터 또는 행렬로 반환됩니다. (m – 1)×3 계층적 군집 트리 Z
(입력값 X
가 주어졌을 때 linkage
의 출력값)에 대해, T
는 X
의 m개 행(관측값)의 군집 할당을 포함합니다.
T
의 크기는 C
또는 N
의 대응하는 크기에 따라 달라집니다.
C
가 양의 스칼라이면,T
는 길이가 m인 벡터입니다.N
이 양의 정수이면,T
는 길이가 m인 벡터입니다.C
가 양의 스칼라로 구성된 길이 l의 벡터이면,T
는C
의 값마다 하나의 열이 있는 m×l 행렬입니다.N
이 양의 정수로 구성된 길이 l의 벡터이면,T
는N
의 값마다 하나의 열이 있는 m×l 행렬입니다.
대체 기능
입력 데이터 행렬 X
가 있는 경우 clusterdata
를 사용하여 병합 군집화를 수행하고 X
의 각 관측값(행)에 대한 군집 인덱스를 반환할 수 있습니다. clusterdata
함수가 필요한 모든 단계를 수행하기 때문에 pdist
, linkage
, cluster
함수를 별도로 실행할 필요가 없습니다.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)