MATLAB Qクラスター分析例

樹形図を生成する方法

1.計算は、2つの点n個のサンプル間の距離は、マトリックスと呼ばれる
2つのN構成されるクラス、各クラスが一つだけサンプル点を含む、プラットフォーム高さの各タイプが0である
3.最も近い2つの組み合わせ新しいクラスのための、図2のクラスタからプラットフォームの高さとして、これら2つの値の間のクラス。
クラスは、そうでなければバック、ステップ5に進みた場合4.全てのタイプのこの新しいクラスまでの距離を算出し、その数は1に等しいです。ステップ3
クラスタリング図5動画
6は、クラスとクラスの数を決定します

例えば:

5社の営業担当者を有し、それらの売上高は、二次元の変数(V1、V2)によって記載され、表が参照
ここに画像を挿入説明
点の間の距離を測定する距離の絶対値を使用して点はクラス間測定するための最短距離法であります距離

距離行列を計算する1

      w1     w2    w3    w4    w5

w1     0     1     4     6     6  
w2     1     0     3     5     5
w3     4     3     0     2     4
w4     6     5     2     0     4
w5     6     5     4     4     0

2.クラスター分析

(1)すべての要素がsui generis H1 = {W1、W2、W3 、W4、W5}。プラットフォーム高さの各クラスが0であり
、H6は、新しいクラスの合成W2、プラットフォーム高さの新しいクラスが1であり、その後、分類(2)がW1である:
{H6 =、W3、W5のW4}のH2
(3。 )H7は、新しいクラスの合成W4 W3は、プラットフォームの高さの新しいクラスが2である場合、分類がある:
{= H6、H7、W5}のH3
(4)H6、H7 H8合成し、新しいクラスに、新しいクラス。プラットフォーム3の高さは、その後の分類がある:
H4 = {H8、W5}
(5)H8、H9 W5合成し、新しいクラスに、プラットフォーム高さの新しいクラスは4であるが、その後、分類がある:
H5 = {} H9

コードは以下の通りであります:

clc,clear
a = [1,0;1,1;3,2;4,3;2,5];
[m,n] = size(a);
d = mandist(a')
d = tril(d);
nd = nonzeros(d);
nd = union(nd,nd);

for i = 1:m-1
nd_min = min(nd);
[row,col] = find(d == nd_min);tm = union(row,col);
tm = reshape(tm,1,length(tm));
fprintf('第%d次合成,平台高度为%d时的分类结果为:%s',i,nd_min,int2str(tm));
nd(find(nd == nd_min)) = [];
if length(nd) == 0
break
end 
end

コードの行により詳細なコメント:()

クラスタリングの準備の前に:

1.clcは、すべての変数が作業エリアをクリアするために保存されて表現クリアし、すべてのコード、コマンドラインウィンドウをクリアします。場合可変クリアランス、クリア後に透明Xと、すなわち、直接であってもよい
2生成行列:同じ行の要素または空間との間の括弧[]で終わる端部はセミコロンで、セミコロンによって異なる行要素を分離入力またはパーティション
3.size(A)マトリックスの大きさを表し、その値は2つの変数の行の数、すなわち、列の番号に割り当てられています。すなわち:行列の行のM =数、N =マトリクスの列数
4。mandist()関数ブログを参照の上、二十から二行ベクトルの集合の間の距離の絶対値を求めて
撮影した下三角行列要素)は(5.tril表し; triuが取ら上三角行列の要素を表す
6.nonzerosは()は、すべての行列削除を表しますゼロ要素、シーケンス内の残りの非ゼロ要素
のシーケンスで必要に応じて7.union()は、検索及び設定するために使用されます。これは、重複要素を除去する方法することができ

開始クラスタ

ループが理由でM-1〜1の範囲に設定されているループ、8.for:Mの値について、最もM-1に時間がマージ、少なくとも1回マージ
最低)(9.minを
10。()関数を見つけますベクトルまたは行列の基本的な機能は、インデックス要素0の位置に戻らない
種々の用途を有し、これは、コードを記述し、詳細な使用状況下リンク参照
検索行列を2つまたは3つのアレイが返される場合があります。
例えば:
[ (X行、COL =見つける == 3)
行:意味するすべての行の中で×3の行列要素の値を返す
COL:戻り行列要素の値は、すべての列数×3
:EG
[行、COL、ヴァルを] =検索(X> 3)
意味:行:すべての行の3よりもx値の大きいにおける行列要素は戻り
COL:返すx値の行列要素は、列の数が3のすべてより大きい
ヴァル:全3より返すx値の大きいにおける行列要素を値は
11。変形(A、M、N)関数m×nの行列B(要素変わらないが、マトリックスの変化の大きさ)の寸法に戻るマトリックス
そうコード形式の次の行を出力するように、行ベクトルにコード配列TMの行を
12%dが出力整数を表し、%Sは、出力文字列を表す
(関数int2str)文字列へのデータ構造を示す
文章で引用符内に配置した構造の引用をフォーマット以外のパラメータ
13。(X)= []、X全てが除去行列要素のインデックスを表し
、xが行列である場合、関数は、行または列の最大数を返し、列数、要素、即ち数、列14.length(X)の数の長さを示しますすなわち:長さ(X)= MAX(サイズ(X))
15。ループブレークwhileループの実行を中断または終了します。ループにおけるbreak文文の後に実行されていません。ネストされたループでは、唯一そのループの出口からブレークが発生します。コントロールは、サイクルの終了後のステートメントに渡されます。

サイクルは継続します:続行は、またはwhileループの次の反復に制御を渡します。これは、ループ本体の現在の反復における任意の残りのステートメントをスキップします。プログラムの実行は、次の反復から続けています。それが唯一のループに適用される呼び出しを続けます。ネストされたループでは、唯一の文が発生したことをループ本体の残りの部分をスキップし続けます。

出力結果:

1で第1合成プラットフォームの高さの分類結果:1 2
2合成プラットフォーム高さの分類結果2:34
3の分類結果の第三の合成プラットフォームの高さ:2 3つの
4合成、分類結果の台4の高さ:1345

結果の解釈:

最初の合併、新しいクラスH6にマージ1にW1、W2に最も近い、、、及びからプラットフォームの高さとその値
(H6、W3、W4、W5の種類との間の第2の合成、 ) 最寄りにW3、W4、2ために、新しいクラスH7でそれらを組み合わせ、そしてなどのプラットフォームからの高さ
、様々なタイプの間の複合三、(H6、H7、W5)W2でH6に最も近い、および(最短距離法とクラスからクラスに基づいて)W3のH7は、3であり、H6、H8 H7はW3は、新しいカテゴリに併合するが、結果は、合成出力W2として表示され
、様々なタイプ(H8、間、第四の組み合わせ{W3、W5){W1、W3}最も近い 、{W4、W5};、W5} W1は、W3、W4、W5組み合わせ、すなわちH8 H9と合併W5、であるように、4

図発生クラスター、次のように

clc,clear
a = [1,0;1,1;3,2;4,3;2,5];
y = pdist(a,'cityblock');      %求a的两两行向量之间的绝对值距离
yc = squareform(y);            %变换成距离方阵
z = linkage(y)                 %产生等级聚类树
[h,t] = dendrogram(z)          %画聚类树
T = cluster(z,'maxclust',3)    %把对象划分成3类
for i  =1:3
tm = find(T == i);             %求第i类对象
tm = reshape(tm,1,length(tm)); %变成行向量
fprintf('第%d类的有%s\n',i,int2str(tm));  %显示分类结果
end

詳細コード:

1。PDIST()関数:Y = PDIST(X)を算出し、M×N(行列X 次元nのm番目の行ベクトルとみなす)2×2のオブジェクト間のユークリッド距離。m個のデータセットのオブジェクトのために、合計(M-1)×M / 2 ペアワイズ組み合わせのオブジェクト。
Yは、距離情報の出力の長さ(M-1)ベクター×M / 2を有しています。
利用できますsquareform機能このベクターは、それがiと元のデータセットオブジェクトのjの間の距離に対応する行列要素(i、j)を与える、変換された正方形です。

2。リンケージ()関数

使用Z =結合(Y)最短距離アルゴリズムを階層構造を有するクラスタツリーを生成します。Yは、入力行列出力PDIST(M-1)×M /の関数である 2 次元の行ベクトルから。
Z =結合(Y、「メソッド 」) クラスタリングツリーがアルゴリズム、 『メソッド』望ましい規定された方法により算出される生成: 『単一』(最短距離法、デフォルト)、 『平均』(権利がない平均距離)、「病棟を「(二乗法の和」)などが挙げられます。
Zは、出力情報(M-1)×3マトリックスを含むクラスタツリーです。元のデータセットの対象として、ツリーのリーフノードのクラスタリング、1〜mです。彼らは、クラスが生成され、より高いレベルで、単一要素のタイプです。インデックスが新たに生成されたクラスの各々のj番目の行に対応するZは+ M、mはリーフノードの初期数はJです。

各列の行列要素のZの意味:

1行目と2行目、即ち、Z(:、[1:2 ])、 二百二十から一新しいクラスインデックスを生成するために接続されるすべてのオブジェクトを含んでいます。新しいクラスインデックスm + Jを生成する。
第3列のZ(:、3)各2つのオブジェクトに対応するクラスとの間の接続距離を含有します。

3。系統樹()関数樹状クラスタリングツリーを生成した
[H、T] =デンドログラム( Z) の戻り値のが解釈されます。

H -ラインのハンドル
ベクトル
ベクトルとして返さデンドログラムプロットの行へのハンドル。

H:行のクラスタマップの処理、およびベクトルとして返されます

T -リーフノード番号の
ベクトル列
元のデータセット内の各データポイントのリーフノード番号、Mは、元のデータセット内のデータ点の数であり、長さMの列ベクトルとして返します。

元のデータにおけるPのデータ点(Pは、デフォルトでは、30である)よりも少ないがある場合、すべてのデータポイントは、各ノードが単一のデータ点を含むと、樹状に表示されます。「:この場合、Tは、アイデンティティ・マップ、T =(M 1)です。

Pは、データ点の総数未満である場合、Tは有用です。すなわち、複数のデータポイントに樹状図表示対応にするとき、いくつかのリーフノードです。例えば、ポイントは樹状プロット、使用検索(T == k)のリーフノードkに含まれているデータを調べることができます。

T:列ベクトル戻るように、リーフノードを表します。各データの元のデータセット内のリーフノードは、Mの長さが返される列ベクトルに格納され、Mは、元のデータセットのデータ数です。
データの数が値P(デフォルトP 30)よりも小さい場合、すべてのデータは、樹状図に示されている、すなわち、それらは、この場合、すべての単一要素型であり、Tは、マッピング部です。
データ値の数がPよりも大きい場合にのみ、Tは意味があります。即ち、データに対応するリーフノードの複数の一部。例えば、データを含む、樹状図を見つけるために、リーフノードK、使用検索(T == K)機能に必要。
P:最大リーフノード、指定されていない場合、デフォルトは30です

4。クラスタ機能

T =クラスタ(Z 'maxclust'、n)は'距離'の基準を用いて、最大n個のクラスタを構築します。
クラスタがツリーの葉N個以下のクラスタを介しに水平カット最小高さを見出します。
nがベクトルである場合、Tは最大値ごとに列を持つクラスター割り当ての行列です。

出力の結果と解釈:

ここに画像を挿入説明
図5は、行ベクトルyを得るためのベクターの2つの列の間の絶対距離を算出し、行ベクトルの2次元マトリクスとして考慮されます

ここに画像を挿入説明
ベクトルy YC広場から距離を変換することによりSquareform機能

ここに画像を挿入説明
階層的クラスタリングツリーの生成手順:デフォルトのアルゴリズム-最短距離クラスタリングツリー生成方法。
二乗距離、最小の距離は1であり、すなわち合成W1、W2、単一要素のクラスに対応する最小距離を組み合わせること、発見し、新たなクラスのインデックス値M + 1 = 6であり、
残りのクラスを発見し続けます最小値、距離は2であり、すなわち合成W3、W4との間の距離、新しいクラス指標値M + 2 = 7は
、距離が3であり、すなわち複合W2、W3を、残りのカテゴリ間の最小距離を検索し続けます6つの組み合わされるクラス、クラス7、および新しいクラスインデックスが8である
とマージされたクラスW5及び8,4の距離

ここに画像を挿入説明
樹形図のように

ここに画像を挿入説明
分類結果として、

解決すべき問題:

1.squareform機能
2.cluster機能

参考文献:

樹形図を参照してくださいする方法

見つける()関数の使用法

リシェイプ()関数の使用法

配列要素は、一定の条件を満たして削除します。

公開された29元の記事 ウォンの賞賛3 ビュー964

おすすめ

転載: blog.csdn.net/weixin_44813932/article/details/96724843