CLUSTER関数で​得られたクラスターを​任意のクラスター数で​分類してDENDRO​GRAM関数で色分け​表示するにはどうすれ​ばいいですか?

조회 수: 11 (최근 30일)
MathWorks Support Team
MathWorks Support Team 2015년 4월 15일
답변: MathWorks Support Team 2015년 4월 15일
以下のように、CLUSTER関数では、maxclust プロパティでクラスター数を指定してクラスタリングすることができます。
 
NumCluster = 3; % クラスター数
rand('state', 7)
data = [rand(10,3); rand(10,3)+1; rand(10,3)+2]; % サンプルデータ
dist = pdist(data, 'euclidean'); % 距離行列計算
link = linkage(dist, 'complete'); % クラスターツリーの行列計算
clust = cluster(link, 'maxclust', NumCluster); % クラスター数を指定して、クラスタリング
 
しかし、以下のようにDENDROGRAM関数を実行すると、全ての系統が同じ色で表示されてしまいます。
 
[H,T,perm] = dendrogram(link, 0);
指定したクラスター数で、それぞれを色分け表示して描画する方法を教えてください。

채택된 답변

MathWorks Support Team
MathWorks Support Team 2015년 4월 15일
DENGROGRAM関数では、CLUSTER関数で出力されるクラスターと一致させて色づけすることはできません。
代替案として、DENGROGRAM関数の "colorthreshold"オプションを使用する方法があります。
 
NumCluster = 3; % クラスター数
rand('state', 7)
data = [rand(10,3); rand(10,3)+1; rand(10,3)+2]; % サンプルデータ
dist = pdist(data, 'euclidean'); % 距離行列計算
link = linkage(dist, 'complete'); % クラスターツリーの行列計算
clust = cluster(link, 'maxclust', NumCluster); % クラスター数を指定して、クラスタリング
color = link(end-NumCluster+2,3)-eps; % 閾値を計算
[H,T,perm] = dendrogram(link, 0, 'colorthreshold', color); % 色分けの閾値を指定して描画
この例では、LINKAGE 関数の出力変数 tree の3列目に含まれる距離(クラスターツリーの高さ)の情報を用いて、指定したクラスター数となる距離から微小な値(eps) を差し引くことで閾値をとして計算しています。
なお、上記の例で指定される変数 NumCluster の値は、2以上である必要があります。

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 クラスターの可視化と評価에 대해 자세히 알아보기

제품


릴리스

R14SP2

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!