Matlab提供系列函數(shù)用于聚類分析,歸納起來具體方法有如下:
方法一:直接聚類,利用clusterdata函數(shù)對(duì)樣本數(shù)據(jù)進(jìn)行一次聚類,其缺點(diǎn)為可供用戶選擇的面較窄,不能更改距離的計(jì)算方法,該方法的使用者無需了解聚類的原理和過程,但是聚類效果受限制。
方法二:層次聚類,該方法較為靈活,需要進(jìn)行細(xì)節(jié)了解聚類原理,具體需要進(jìn)行如下過程處理:(1)找到數(shù)據(jù)集合中變量?jī)蓛芍g的相似性和非相似性,用pdist函數(shù)計(jì)算變量之間的距離;(2)用 linkage函數(shù)定義變量之間的連接;(3)用 cophenetic函數(shù)評(píng)價(jià)聚類信息;(4)用cluster函數(shù)創(chuàng)建聚類。
方法三:劃分聚類,包括K均值聚類和K中心聚類,同樣需要系列步驟完成該過程,要求使用者對(duì)聚類原理和過程有較清晰的認(rèn)識(shí)。
接下來,介紹Matlab中的相關(guān)函數(shù)和相關(guān)聚類方法。
1.Matlab中相關(guān)函數(shù)介紹
1.1 pdist函數(shù)
調(diào)用格式:Y=pdist(X,’metric’)
說明:用 ‘metric’指定的方法計(jì)算 X 數(shù)據(jù)矩陣中對(duì)象之間的距離。’
X:一個(gè)m×n的矩陣,它是由m個(gè)對(duì)象組成的數(shù)據(jù)集,每個(gè)對(duì)象的大小為n。
metric’取值如下:
‘euclidean’:歐氏距離(默認(rèn));‘seuclidean’:標(biāo)準(zhǔn)化歐氏距離;
‘mahalanobis’:馬氏距離;‘cityblock’:布洛克距離;
‘minkowski’:明可夫斯基距離;‘cosine’:
‘correlation’: ‘hamming’:
‘jaccard’: ‘chebychev’:Chebychev距離。
1.2 squareform函數(shù)
調(diào)用格式:Z=squareform(Y,..)
說明: 強(qiáng)制將距離矩陣從上三角形式轉(zhuǎn)化為方陣形式,或從方陣形式轉(zhuǎn)化為上三角形式。
1.3 linkage函數(shù)
調(diào)用格式:Z=linkage(Y,’method’)
說 明:用‘method’參數(shù)指定的算法計(jì)算系統(tǒng)聚類樹。
Y:pdist函數(shù)返回的距離向量;
method:可取值如下:
‘single’:最短距離法(默認(rèn)); ‘complete’:最長(zhǎng)距離法;
‘a(chǎn)verage’:未加權(quán)平均距離法; ‘weighted’: 加權(quán)平均法;
‘centroid’:質(zhì)心距離法; ‘median’:加權(quán)質(zhì)心距離法;
‘ward’:內(nèi)平方距離法(最小方差算法)
返回:Z為一個(gè)包含聚類樹信息的(m-1)×3的矩陣。
1.4 dendrogram函數(shù)
調(diào)用格式:[H,T,…]=dendrogram(Z,p,…)
說明:生成只有頂部p個(gè)節(jié)點(diǎn)的冰柱圖(譜系圖)。
1.5 cophenet函數(shù)
調(diào)用格式:c=cophenetic(Z,Y)
說明:利用pdist函數(shù)生成的Y和linkage函數(shù)生成的Z計(jì)算cophenet相關(guān)系數(shù)。
1.6 cluster 函數(shù)
調(diào)用格式:T=cluster(Z,…)
說明:根據(jù)linkage函數(shù)的輸出Z 創(chuàng)建分類。
1.7 clusterdata函數(shù)
調(diào)用格式:T=clusterdata(X,…)
說明:根據(jù)數(shù)據(jù)創(chuàng)建分類。
T=clusterdata(X,cutoff)與下面的一組命令等價(jià):
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,cutoff);
2. Matlab聚類程序的設(shè)計(jì)
2.1方法一:一次聚類法
X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];
T=clusterdata(X,0.9)
2.2 方法二和方法三設(shè)計(jì)流程:分步聚類
Step1 尋找變量之間的相似性
用pdist函數(shù)計(jì)算相似矩陣,有多種方法可以計(jì)算距離,進(jìn)行計(jì)算之前最好先將數(shù)據(jù)用zscore函數(shù)進(jìn)行標(biāo)準(zhǔn)化。
X2=zscore(X); %標(biāo)準(zhǔn)化數(shù)據(jù)
Y2=pdist(X2); %計(jì)算距離
Step2 定義變量之間的連接
Z2=linkage(Y2);
Step3 評(píng)價(jià)聚類信息
C2=cophenet(Z2,Y2); //0.94698
Step4 創(chuàng)建聚類,并作出譜系圖
評(píng)論