cluster
リンケージによる凝集型クラスターの構築
構文
説明
は、凝集型の階層クラスター ツリー T
= cluster(Z
,'Cutoff'
,C
)Z
からクラスターを定義します。入力 Z
は、入力データ行列 X
に対する関数 linkage
の出力です。cluster
は、ツリー内のノードの不整合係数 (または inconsistent
の値) のしきい値として C
を使用して、Z
をクラスターに分割します。出力 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 クラス (クラス 1) と virginica クラス (クラス 3) の区別は不十分です。散布図におけるクラスのラベル付けには T
に格納されている番号が使用されることに注意してください。
クラスターの割り当てとクラスの比較
fisheriris
データ セットで最大 3 つのクラスターを求め、花のクラスター割り当てを既知の分類と比較します。
標本データを読み込みます。
load fisheriris
'average'
法と 'chebychev'
尺度を使用して階層クラスター ツリーを作成します。
Z = linkage(meas,'average','chebychev');
データ内のクラスターを最大 3 つ求めます。
T = cluster(Z,'maxclust',3);
Z
の系統樹図を作成します。3 つのクラスターを表示するため、3 番目から最後までのリンクと 2 番目から最後までのリンクの中間点にカットオフを設定して 'ColorThreshold'
を使用します。
cutoff = median([Z(end-2,3) Z(end-1,3)]);
dendrogram(Z,'ColorThreshold',cutoff)
3 つのクラスターがどのようにして 1 つに結合されるかを調べるため、Z
の最後の 2 行を表示します。linkage
は、293 番目のクラスター (青) を 297 番目のクラスター (赤) と結合し、1.7583
というリンクで 298 番目のクラスターを形成します。そして、linkage
は 296 番目のクラスター (緑) を 298 番目のクラスターと結合します。
lastTwo = Z(end-1:end,:)
lastTwo = 2×3
293.0000 297.0000 1.7583
296.0000 298.0000 3.4445
クラスターの割り当てが 3 つの種類に対応していることを確認します。たとえば、クラスターの 1 つには、2 番目の種類の花が 50
本、3 番目の種類の花が 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');
データを最大 4 つのグループにクラスター化し、結果をプロットします。
c = cluster(Z,'Maxclust',4);
scatter3(X(:,1),X(:,2),X(:,3),10,c)
cluster
は、データ内のグループを 4 つ識別します。
入力引数
C
— クラスターを定義するためのしきい値
正のスカラー | 正のスカラーのベクトル
クラスターを定義するためのしきい値。正のスカラー、または正のスカラーのベクトルを指定します。cluster
は、階層クラスター ツリーでクラスターを定義するための criterion
に応じて、ノードの高さまたは不整合係数のしきい値として C
を使用します。
クラスターを定義する基準が
'distance'
である場合、あるノードの高さがC
未満であれば、cluster
はそのノードの位置以下にあるすべてのリーフをクラスターにグループ化します。クラスターを定義する基準が
'inconsistent'
である場合、あるノードおよびそのすべてのサブノードでinconsistent
の値がC
未満であれば、cluster
はこれらのノードをクラスターにグループ化します。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'
である場合、あるノードの高さが C
未満であれば、cluster
はそのノードの位置以下にあるすべてのリーフをクラスター (ノード自体がリーフである場合はシングルトン) にグループ化します。ツリー内のノードの高さは、そのノードで結合されている 2 つのサブノードの間の距離を表します。'distance'
を指定した場合、クラスターは Z
の dendrogram
プロットの水平スライスに対応します。
クラスターを定義する基準が 'inconsistent'
である場合、あるノードおよびそのすべてのサブノードの不整合係数 (inconsistent
の値) が C
未満であれば、cluster
はそのノードおよびサブノードをクラスターにグループ化します。'inconsistent'
という指定は、cluster(Z,'Cutoff',C)
と等価です。
例: cluster(Z,'Cutoff',0.5,'Criterion','distance')
データ型: char
| string
N
— クラスターの最大数
正の整数 | 正の整数のベクトル
形成するクラスターの最大数。正の整数、または正の整数のベクトルを指定します。cluster
は、クラスターを定義する基準として 'distance'
を使用して、最大 N
個のクラスターを構築します。ツリー内の各ノードの高さは、そのノードで結合されている 2 つのサブノードの間の距離を表します。cluster
は、ツリーを水平に切り取ると N
個以下のクラスターが残る、最小の高さを求めます。詳細については、任意のクラスターの指定を参照してください。
例: cluster(Z,'MaxClust',5)
データ型: single
| double
出力引数
T
— クラスター割り当て
数値ベクトル | 数値行列
クラスター割り当て。数値ベクトルまたは行列として返されます。(m – 1) 行 3 列の階層クラスター ツリー Z
(入力 X
に対する linkage
の出力) の場合、X
の m 個の行 (観測値) に対するクラスター割り当てが T
に格納されます。
T
のサイズは、対応する C
または N
のサイズによって異なります。
C
が正のスカラーである場合、T
は長さ m のベクトルになります。N
が正の整数である場合、T
は長さ m のベクトルになります。C
が正のスカラーによる長さ l のベクトルである場合、T
は m 行 l 列の行列になり、各列がC
の各値に対応します。N
が正の整数による長さ l のベクトルである場合、T
は m 行 l 列の行列になり、各列がN
の各値に対応します。
代替機能
入力データ行列 X
がある場合、clusterdata
を使用すると、凝集型クラスタリングを実行して、X
内の各観測値 (行) のクラスター インデックスを取得できます。関数 clusterdata
は必要な手順をすべて実行するので、関数 pdist
、linkage
および cluster
を個別に実行する必要はありません。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは 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)