
CLUSTER関数で得られたクラスターを任意のクラスター数で分類してDENDROGRAM関数で色分け表示するにはどうすればいいですか?
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 15 Apr 2015
Risposto: MathWorks Support Team
il 15 Apr 2015
以下のように、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);

指定したクラスター数で、それぞれを色分け表示して描画する方法を教えてください。
Risposta accettata
MathWorks Support Team
il 15 Apr 2015
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 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su クラスターの可視化と評価 in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!