聚類分析的Matlab 程式—系統聚類(附有案例分析)
阿新 • • 發佈:2019-01-07
聚類分析的Matlab 程式—系統聚類
(1)計算資料集每對元素之間的距離,對應函式為pdistw.
呼叫格式:Y=pdist(X),Y=pdist(X,’metric’), Y=pdist(X,’distfun’),Y=pdist(X,’minkowski’,p)
說明:X是m*n的矩陣,metric是計算距離的方法選項:
metric=euclidean表示歐式距離(預設值);
metric=seuclidean表示標準的歐式距離;
metric=mahalanobis表示馬氏距離。
distfun是自定義的距離函式,p是minkowski距離計算過程中的冪次,預設值為2.Y返回大小為m(m-1)/2的距離矩陣,距離排序順序為(1,2),(1,3),…(m-1,m),Y也稱為相似矩陣,可用squareform將其轉化為方陣。
(2)對元素進行分類,構成一個系統聚類樹,對應函式為linkage.
呼叫格式:Z=linkage(Y), Z=linkage(Y,’method’)
說明:Y是距離函式,Z是返回系統聚類樹,method是採用的演算法選項,
如下:method=single表示最短距離(預設值);
complete表示最長距離;median表示中間距離法;
centroid表示重心法;average表示類平均法;
ward 表示離差平方和法(Ward法)。
(3)確定怎樣劃分系統聚類樹,得到不同的類,對應的函式為cluster.
呼叫格式:T=cluster(Z,’cutoff’,c),T=cluster(Z,’maxclust’,n)
說明:Z是系統聚類樹,為(m-1)*3的矩陣,c是閾值,n是類的最大數目,
maxclust是聚類的選項,cutoff是臨界值,決定cluster函式怎樣聚類。
例題1 利用系統聚類法對5個變數進行分類。
matlab程式
%Matlab執行程式:
X=[20,7;18,10;10,5;4,5;4,3];
Y=pdist(X);
SF=squareform(Y);
Z=linkage(Y,’single’);
dendrogram(Z);%顯示系統聚類樹
T=cluster(Z,'maxclust',3)
例題2
%例2的程式設計: X=[1 1;1 2;6 3;8 2;8 0]; Y=pdist(X); SF=squareform(Y); Z=linkage(Y,'single'); dendrogram(Z); T=cluster(Z,'maxclust',3)
聚類分析案例
根據第三產業國內生產總值的9 項指標,對華東地區6 省1 市進行分類,原始資料如下表:
%Matlab程式如下:
X=[244.42 412.04 459.63 512.21 160.45 43.51 89.93 48.55 48.63
435.77 724.85 376.04 381.81 210.39 71.82 150.64 23.74 188.28
321.75 665.80 157.94 172.19 147.16 52.44 78.16 10.90 93.50
152.29 258.60 83.42 85.10 75.74 26.75 63.47 5.89 47.02
347.25 332.59 157.32 172.48 115.16 33.80 77.27 8.69 79.01
145.40 143.54 97.40 100.50 43.28 17.71 51.03 5.41 62.03
442.20 665.33 411.89 429.88 115.07 87.45 145.25 21.39 187.77 ]';
Y=pdist(X);
SF=squareform(Y);
Z=linkage(Y,'average');
dendrogram(Z);
T=cluster(Z,'maxclust',3)